-/* ClientSocket.c - NeonServ v5.4
+/* ClientSocket.c - NeonServ v5.5
* Copyright (C) 2011-2012 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
#ifndef WIN32
static int _connect_socket(struct ClientSocket *client) {
if((client->flags & SOCKET_FLAG_CONNECTED)) return 1;
+ client->connection_time = time(0);
int sock;
struct addrinfo hints, *res;
client->sock = sock;
client->flags |= SOCKET_FLAG_CONNECTED | SOCKET_FLAG_RECONNECT;
- client->connection_time = time(0);
if(client->flags & SOCKET_FLAG_SSL) {
ssl_connect(client);
#else
static int _connect_socket(struct ClientSocket *client) {
if((client->flags & SOCKET_FLAG_CONNECTED)) return 1;
+ client->connection_time = time(0);
struct hostent *host;
struct sockaddr_in addr;
int sock;
client->sock = sock;
client->flags |= SOCKET_FLAG_CONNECTED | SOCKET_FLAG_RECONNECT;
- client->connection_time = time(0);
if(client->flags & SOCKET_FLAG_SSL) {
#else
putlog(LOGLEVEL_RAW, "[send %d] %s", len, msg);
#endif
+ int ret = 1;
if(!(client->flags & SOCKET_FLAG_HAVE_SSL) || ssl_write(client, msg, len) == -2) {
#ifdef WIN32
- send(client->sock, msg, len, 0);
+ ret = send(client->sock, msg, len, 0);
#else
- write(client->sock, msg, len);
+ ret = write(client->sock, msg, len);
#endif
}
client->traffic_out += len;
DESYNCHRONIZE(synchronized);
- return 1;
+ return ret;
}
int write_socket(struct ClientSocket *client, char* msg, int len) {
timeout.tv_sec = timeout_seconds;
timeout.tv_usec = 0;
ret = select(ret + 1, &fds, NULL, NULL, &timeout);
- if(ret == 0) {
- DESYNCHRONIZE(synchronized_recv);
- return 1;
- }
for (sock = sockets->data; sock; sock = next) {
next = sock->next;
if((sock->flags & (SOCKET_FLAG_CONNECTED | SOCKET_FLAG_QUITTED)) == SOCKET_FLAG_CONNECTED && FD_ISSET(sock->sock, &fds)) {
if(is_synchronized) {
DESYNCHRONIZE(synchronized_recv);
}
- return (ret + 1);
+ return 1;
}
void