From: Stephan Bosch Date: Thu, 14 Dec 2017 20:50:58 +0000 (+0100) Subject: lib-http: client: Check whether client is running in a wait loop with the correct... X-Git-Tag: 2.3.0.rc1~38 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3c8a163545079984e827aa50349cbc4fe570875f;p=thirdparty%2Fdovecot%2Fcore.git lib-http: client: Check whether client is running in a wait loop with the correct condition. This used to check client->ioloop != NULL, but now it should check client->waiting. Previous commit (e8a1b62fe4a81b211dcccd1a58b44f254074eab6) omitted a few instances where this should have been changed. --- diff --git a/src/lib-http/http-client-connection.c b/src/lib-http/http-client-connection.c index 8a7388c252..52281e40f7 100644 --- a/src/lib-http/http-client-connection.c +++ b/src/lib-http/http-client-connection.c @@ -135,7 +135,7 @@ http_client_connection_server_close(struct http_client_connection **_conn) } array_clear(&conn->request_wait_list); - if (client != NULL && client->ioloop != NULL) + if (client != NULL && client->waiting) io_loop_stop(client->ioloop); http_client_connection_close(_conn); @@ -437,7 +437,7 @@ void http_client_connection_check_idle(struct http_client_connection *conn) i_assert(peer != NULL); client = peer->client; - if (client->ioloop != NULL) + if (client->waiting) io_loop_stop(client->ioloop); count = array_count(&peer->conns); diff --git a/src/lib-http/http-client-host.c b/src/lib-http/http-client-host.c index ac589e1ccc..2fa8785079 100644 --- a/src/lib-http/http-client-host.c +++ b/src/lib-http/http-client-host.c @@ -393,7 +393,7 @@ http_client_host_lookup_done( requests += http_client_queue_host_lookup_done(*queue_idx); } - if (requests == 0 && client->ioloop != NULL) + if (requests == 0 && client->waiting) io_loop_stop(client->ioloop); } diff --git a/src/lib-http/http-client-request.c b/src/lib-http/http-client-request.c index 2418d04487..bf88c7c5ec 100644 --- a/src/lib-http/http-client-request.c +++ b/src/lib-http/http-client-request.c @@ -628,7 +628,7 @@ void http_client_request_get_stats(struct http_client_request *req, (ioloop_global_wait_usecs - req->sent_global_ioloop_usecs + 999) / 1000; /* time spent in the http-client's own ioloop */ - if (client->ioloop != NULL) { + if (client->waiting) { wait_usecs = io_wait_timer_get_usecs(req->conn->io_wait_timer); i_assert(wait_usecs >= req->sent_http_ioloop_usecs); stats_r->http_ioloop_msecs = (unsigned int) diff --git a/src/lib-http/http-client.c b/src/lib-http/http-client.c index 3503b6120c..08c9cceb56 100644 --- a/src/lib-http/http-client.c +++ b/src/lib-http/http-client.c @@ -282,8 +282,6 @@ void http_client_wait(struct http_client *client) { struct ioloop *prev_ioloop, *client_ioloop, *prev_client_ioloop; - i_assert(client->ioloop == NULL); - if (client->requests_count == 0) return;