Before checking ip/hostname of SilcSocketConnection, check
authorPatrik Weiskircher <pat@silcnet.org>
Fri, 19 Aug 2005 13:45:10 +0000 (13:45 +0000)
committerPatrik Weiskircher <pat@silcnet.org>
Fri, 19 Aug 2005 13:45:10 +0000 (13:45 +0000)
if its not doing a host lookup currently. Fixes atleast one
crash when many people connect at the same time.

CHANGES
apps/silcd/server_util.c

diff --git a/CHANGES b/CHANGES
index 4ce588e4e8a72e4e2dfe68b7a5c9a7cd2c319d67..751335b115e3f709820ce0297696e8b836414084 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,10 @@
+Fri Aug 19 15:20:05 CEST 2005  Patrik Weiskircher <pat@icore.at>
+
+       * Before checking ip/hostname of SilcSocketConnection, check
+         if its not doing a host lookup currently. Fixes atleast one
+         crash when many people connect at the same time.
+         Affected file apps/silcd/server_util.c.
+
 Thu May 26 20:31:06 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
 
        * Check for valid return value from regcomp.  Affected file
index 05197afcf13eeed65a0a360372def2b7bdfbc8c4..4fc8cacca2c1a4db6a4791b52885886ae57d0275 100644 (file)
@@ -1103,6 +1103,7 @@ SilcUInt32 silc_server_num_sockets_by_ip(SilcServer server, const char *ip,
 
   for (i = 0, count = 0; i < server->config->param.connections_max; i++) {
     if (server->sockets[i] && !SILC_IS_LISTENER(server->sockets[i]) &&
+       !SILC_IS_HOST_LOOKUP(server->sockets[i]) &&
        !strcmp(server->sockets[i]->ip, ip) &&
        server->sockets[i]->type == type)
       count++;
@@ -1128,6 +1129,7 @@ SilcUInt32 silc_server_num_sockets_by_remote(SilcServer server,
 
   for (i = 0, count = 0; i < server->config->param.connections_max; i++) {
     if (server->sockets[i] && !SILC_IS_LISTENER(server->sockets[i]) &&
+       !SILC_IS_HOST_LOOKUP(server->sockets[i]) &&
        ((ip && !strcmp(server->sockets[i]->ip, ip)) ||
         (hostname && !strcmp(server->sockets[i]->hostname, hostname))) &&
        server->sockets[i]->port == port &&
@@ -1802,7 +1804,7 @@ silc_server_find_socket_by_host(SilcServer server,
   int i;
 
   for (i = 0; i < server->config->param.connections_max; i++) {
-    if (!server->sockets[i])
+    if (!server->sockets[i] || SILC_IS_HOST_LOOKUP(server->sockets[i]))
       continue;
     if (!strcmp(server->sockets[i]->ip, ip) &&
        (!port || server->sockets[i]->port == port) &&