From 6f67e37390eee5bb4df6a456de88045ef810406d Mon Sep 17 00:00:00 2001 From: Dennis Schafroth Date: Thu, 6 May 2010 13:05:36 +0200 Subject: [PATCH] Fix the fix on unlimited connections. Nice, Dennis. End-less loop. Break out, if max_connections is not active or if we havent used more connections than max connections. --- src/connection.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/connection.c b/src/connection.c index a936090..c2c5677 100644 --- a/src/connection.c +++ b/src/connection.c @@ -504,22 +504,20 @@ int client_prep_connection(struct client *cl, num_connections); break; } - if (max_connections > 0) { - if (num_connections < max_connections) - { - yaz_log(YLOG_LOG, "num_connections = %d (new); max = %d", - num_connections, max_connections); - break; - } - yaz_log(YLOG_LOG, "num_connections = %d (waiting) max = %d", + if (max_connections <= 0 || num_connections < max_connections) + { + yaz_log(YLOG_LOG, "num_connections = %d (new); max = %d", num_connections, max_connections); - if (yaz_cond_wait(host->cond_ready, host->mutex, abstime)) - { - yaz_log(YLOG_LOG, "out of connections %s", client_get_url(cl)); - client_set_state(cl, Client_Error); - yaz_mutex_leave(host->mutex); - return 0; - } + break; + } + yaz_log(YLOG_LOG, "num_connections = %d (waiting) max = %d", + num_connections, max_connections); + if (yaz_cond_wait(host->cond_ready, host->mutex, abstime)) + { + yaz_log(YLOG_LOG, "out of connections %s", client_get_url(cl)); + client_set_state(cl, Client_Error); + yaz_mutex_leave(host->mutex); + return 0; } } if (co) -- 1.7.10.4