X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=blobdiff_plain;f=src%2FClientSocket.c;h=a624a305498337f8f2ff690144e78df2005a51c1;hp=d8faf26d4a0ec7c56ae3475f083b300300517df3;hb=f4292899a94a9f7638d537dcd58c9ab04cd965af;hpb=ee39770362f69ced5b52104b622582e882af0b77 diff --git a/src/ClientSocket.c b/src/ClientSocket.c index d8faf26..a624a30 100644 --- a/src/ClientSocket.c +++ b/src/ClientSocket.c @@ -100,9 +100,10 @@ struct ClientSocket* create_socket(char *host, int port, char *bindto, char *pas void connect_socket(struct ClientSocket *client) { client->iofd = iohandler_connect(client->host, client->port, ((client->flags & SOCKET_FLAG_SSL) ? 1 : 0), client->bind, socket_callback); client->iofd->data = client; + client->flags |= SOCKET_FLAG_RECONNECT; } -int close_socket(struct ClientSocket *client) { +static int _close_socket(struct ClientSocket *client) { if(client == NULL) return 0; if((client->flags & SOCKET_FLAG_CONNECTED)) { iohandler_printf(client->iofd, "QUIT :[NeonServ %s.%d] disconnect requested.\n", NEONSERV_VERSION, patchlevel); @@ -122,6 +123,12 @@ int close_socket(struct ClientSocket *client) { return 1; } +int close_socket(struct ClientSocket *client) { //external call (don't reconnect) + if(client == NULL) return 0; + client->flags &= ~SOCKET_FLAG_RECONNECT; + return _close_socket(client); +} + int destroy_socket(struct ClientSocket *client) { if(client == NULL) return 0; close_socket(client); @@ -235,7 +242,7 @@ static IOHANDLER_CALLBACK(socket_callback) { break; case IOEVENT_NOTCONNECTED: case IOEVENT_CLOSED: - close_socket(client); + _close_socket(client); if(client->flags & SOCKET_FLAG_RECONNECT) { struct timeval timeout; gettimeofday(&timeout, NULL);