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.2.27~238 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2bde4edef34ef345fe5af50b7b50d6bb4c8bb5b7;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 80ca616d67..e9f181eecb 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 f5fbe25777..f8a0e8acd2 100644 --- a/src/lib-http/http-client-private.h +++ b/src/lib-http/http-client-private.h @@ -332,6 +332,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);