From: Stephan Bosch Date: Tue, 13 Sep 2016 23:26:10 +0000 (+0200) Subject: lib-http: client: Added function that checks whether a connection is currently active. X-Git-Tag: 2.3.0.rc1~2723 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2b9d522a3300fa84a1606e2108a159be7bb36154;p=thirdparty%2Fdovecot%2Fcore.git lib-http: client: Added function that checks whether a connection is currently active. --- diff --git a/src/lib-http/http-client-connection.c b/src/lib-http/http-client-connection.c index d11d104d3b..1ee59f6ac6 100644 --- a/src/lib-http/http-client-connection.c +++ b/src/lib-http/http-client-connection.c @@ -72,6 +72,18 @@ bool http_client_connection_is_idle(struct http_client_connection *conn) return (conn->to_idle != NULL); } +bool http_client_connection_is_active(struct http_client_connection *conn) +{ + if (!conn->connected) + return FALSE; + + if (conn->in_req_callback || conn->pending_request != NULL) + return TRUE; + + return (array_is_created(&conn->request_wait_list) && + array_count(&conn->request_wait_list) > 0); +} + static void http_client_connection_retry_requests(struct http_client_connection *conn, unsigned int status, const char *error) diff --git a/src/lib-http/http-client-private.h b/src/lib-http/http-client-private.h index 94162879b2..d5ad05d94b 100644 --- a/src/lib-http/http-client-private.h +++ b/src/lib-http/http-client-private.h @@ -414,6 +414,7 @@ unsigned int http_client_connection_count_pending(struct http_client_connection *conn); int http_client_connection_check_ready(struct http_client_connection *conn); bool http_client_connection_is_idle(struct http_client_connection *conn); +bool http_client_connection_is_active(struct http_client_connection *conn); int http_client_connection_next_request(struct http_client_connection *conn); void http_client_connection_check_idle(struct http_client_connection *conn); void http_client_connection_switch_ioloop(struct http_client_connection *conn);