From f4292899a94a9f7638d537dcd58c9ab04cd965af Mon Sep 17 00:00:00 2001 From: pk910 Date: Thu, 18 Oct 2012 20:52:21 +0200 Subject: [PATCH] reimplemented auto reconnect for bots --- src/ClientSocket.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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); -- 2.20.1