From: pk910 Date: Fri, 23 Dec 2011 11:32:30 +0000 (+0100) Subject: don't try to read from closing (SOCKET_FLAG_QUIT) sockets X-Git-Tag: v5.3~109 X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=commitdiff_plain;h=0af12ac9ae9738cbc25931b6355a066c5d48a37f don't try to read from closing (SOCKET_FLAG_QUIT) sockets --- diff --git a/src/ClientSocket.c b/src/ClientSocket.c index 6b8b4fb..a108941 100644 --- a/src/ClientSocket.c +++ b/src/ClientSocket.c @@ -369,7 +369,7 @@ void socket_loop(int timeout_seconds) { if(ret == 0) return; for (sock = sockets->data; sock; sock = next) { next = sock->next; - if((sock->flags & SOCKET_FLAG_CONNECTED) && FD_ISSET(sock->sock, &fds)) { + if((sock->flags & (SOCKET_FLAG_CONNECTED | SOCKET_FLAG_QUITTED)) == SOCKET_FLAG_CONNECTED && FD_ISSET(sock->sock, &fds)) { if(sock->bufferpos != 0) { if(!(sock->flags & SOCKET_FLAG_HAVE_SSL) || (bytes = ssl_read(sock, buffer, sizeof(buffer))) == -2) { #ifdef WIN32 @@ -412,7 +412,7 @@ void socket_loop(int timeout_seconds) { sock->bufferpos -= used; } } - } else if(!(sock->flags & SOCKET_FLAG_CONNECTED) && (sock->flags & SOCKET_FLAG_RECONNECT)) { + } else if((sock->flags & (SOCKET_FLAG_CONNECTED | SOCKET_FLAG_RECONNECT)) == SOCKET_FLAG_RECONNECT) { if(time(0) - sock->connection_time >= SOCKET_RECONNECT_TIME) { connect_socket(sock); }