X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Fconnection.c;h=f9b0e0b8fcd8ecb80bccf8fab3c3513a149a244b;hb=944037cb95ef7a0eed6502fdea7541f2431b55cc;hp=b8a7d01852f05f6d75ac56864cf091373be5533f;hpb=ca9817524ebe069581ad72f6bca0e9775d61e30c;p=pazpar2-moved-to-github.git diff --git a/src/connection.c b/src/connection.c index b8a7d01..f9b0e0b 100644 --- a/src/connection.c +++ b/src/connection.c @@ -264,7 +264,6 @@ void connection_release(struct connection *co) { struct client *cl = co->client; - yaz_log(YLOG_DEBUG, "Connection release %s", co->host->hostport); if (!cl) return; client_set_connection(cl, 0); @@ -275,6 +274,7 @@ void connect_resolver_host(struct host *host, iochan_man_t iochan_man) { struct connection *con; +start: yaz_mutex_enter(host->mutex); con = host->connections; while (con) @@ -285,22 +285,22 @@ void connect_resolver_host(struct host *host, iochan_man_t iochan_man) { yaz_mutex_leave(host->mutex); connection_destroy(con); + goto start; /* start all over .. at some point it will be NULL */ - con = host->connections; } else if (!con->client) { yaz_mutex_leave(host->mutex); connection_destroy(con); /* start all over .. at some point it will be NULL */ - con = host->connections; + goto start; } else { yaz_mutex_leave(host->mutex); connection_connect(con, iochan_man); client_start_search(con->client); - con = host->connections; + goto start; } } else @@ -444,7 +444,7 @@ int client_prep_connection(struct client *cl, yaz_mutex_enter(host->mutex); for (co = host->connections; co; co = co->next) if (connection_is_idle(co) && - (!co->client || client_get_session(co->client) != se) && + (!co->client || client_get_state(co->client) == Client_Idle) && !strcmp(ZOOM_connection_option_get(co->link, "user"), session_setting_oneval(client_get_database(cl), PZ_AUTHENTICATION)))