Do not wait for EOF after socket error but close connection.
authorPekka Riikonen <priikone@silcnet.org>
Tue, 19 Nov 2002 20:33:04 +0000 (20:33 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Tue, 19 Nov 2002 20:33:04 +0000 (20:33 +0000)
CHANGES
apps/silcd/server.c

diff --git a/CHANGES b/CHANGES
index 6ae3cf614fe617e2d8076030f213b50c78219342..739dd96f095067cf5a912339f1d7042b9eb52559 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,8 @@
+Tue Nov 19 22:30:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
+
+       * Don't wait for EOF after socket error has occurred, but
+         close the connection.  Affected file is silcd/server.c.
+
 Mon Nov 18 18:58:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
 
        * Added support for setting FOUNDER mode on channel with
index c58e5a6ff025ac19b3552849afbe231cce9f9830..f54f21695b22483cd730b100a87f200b1a479f79 100644 (file)
@@ -2199,6 +2199,11 @@ SILC_TASK_CALLBACK(silc_server_packet_process)
                       sock->type == SILC_SOCKET_TYPE_CLIENT ? "Client" :
                       sock->type == SILC_SOCKET_TYPE_SERVER ? "Server" :
                       "Router")));
+
+      SILC_SET_DISCONNECTING(sock);
+      if (sock->user_data)
+       silc_server_free_sock_user_data(server, sock, NULL);
+      silc_server_close_connection(server, sock);
     }
     return;
   }
@@ -2209,13 +2214,19 @@ SILC_TASK_CALLBACK(silc_server_packet_process)
   ret = silc_packet_receive(sock);
   if (ret < 0) {
 
-    if (ret == -1)
+    if (ret == -1) {
       SILC_LOG_ERROR(("Error receiving packet from connection "
                      "%s:%d [%s] %s", sock->hostname, sock->port,
                      (sock->type == SILC_SOCKET_TYPE_UNKNOWN ? "Unknown" :
                       sock->type == SILC_SOCKET_TYPE_CLIENT ? "Client" :
                       sock->type == SILC_SOCKET_TYPE_SERVER ? "Server" :
                       "Router"), strerror(errno)));
+
+      SILC_SET_DISCONNECTING(sock);
+      if (sock->user_data)
+       silc_server_free_sock_user_data(server, sock, NULL);
+      silc_server_close_connection(server, sock);
+    }
     return;
   }