From: Patrik Weiskircher Date: Fri, 19 Aug 2005 13:45:10 +0000 (+0000) Subject: Before checking ip/hostname of SilcSocketConnection, check X-Git-Tag: silc.toolkit.1.0.1~23 X-Git-Url: http://git.silcnet.org/gitweb/?a=commitdiff_plain;h=57d71c6c7485ac018eb7851505fba550b33d563c;p=silc.git 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. --- diff --git a/CHANGES b/CHANGES index 4ce588e4..751335b1 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,10 @@ +Fri Aug 19 15:20:05 CEST 2005 Patrik Weiskircher + + * 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 * Check for valid return value from regcomp. Affected file diff --git a/apps/silcd/server_util.c b/apps/silcd/server_util.c index 05197afc..4fc8cacc 100644 --- a/apps/silcd/server_util.c +++ b/apps/silcd/server_util.c @@ -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) &&