]> jfr.im git - irc/rqf/shadowircd.git/commitdiff
[ratbox3 svn r26397] Make it more likely that error messages on ssld connections...
authorJilles Tjoelker <redacted>
Thu, 15 Jan 2009 17:08:46 +0000 (20:08 +0300)
committerJilles Tjoelker <redacted>
Thu, 15 Jan 2009 17:08:46 +0000 (20:08 +0300)
When ssld reports a connection closure because of
"Remote host closed the connection" and the connection
is any server or a registered client, try a
read_packet() on the client.
This should mainly help LIBRB_USE_IOTYPE=poll which
iterates over the ready file descriptors in numerical
order, processing the ssld control connection before the
closing data connection.

src/sslproc.c

index 73c28b4196c7ed8829266d85b2a5fab16760d298..56acce8e8ecb62766ca7158dbf9a432828055ca4 100644 (file)
@@ -377,6 +377,14 @@ ssl_process_dead_fd(ssl_ctl_t * ctl, ssl_ctl_buf_t * ctl_buf)
        client_p = find_cli_fd_hash(fd);
        if(client_p == NULL)
                return;
+       if(IsAnyServer(client_p) || IsRegistered(client_p))
+       {
+               /* read any last moment ERROR, QUIT or the like -- jilles */
+               if (!strcmp(reason, "Remote host closed the connection"))
+                       read_packet(client_p->localClient->F, client_p);
+               if (IsAnyDead(client_p))
+                       return;
+       }
        if(IsAnyServer(client_p))
        {
                sendto_realops_snomask(SNO_GENERAL, is_remote_connect(client_p) && !IsServer(client_p) ? L_NETWIDE : L_ALL, "ssld error for %s: %s", client_p->name, reason);