changeset 21030:8aa7fd1cff61

lib-http: client: Added function that checks whether a connection is currently active.
author Stephan Bosch <stephan@dovecot.fi>
date Wed, 14 Sep 2016 01:26:10 +0200
parents a3a045122aa4
children 5da5294c5b31
files src/lib-http/http-client-connection.c src/lib-http/http-client-private.h
diffstat 2 files changed, 13 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-http/http-client-connection.c	Sun Sep 11 19:34:34 2016 +0200
+++ b/src/lib-http/http-client-connection.c	Wed Sep 14 01:26:10 2016 +0200
@@ -72,6 +72,18 @@
 	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)
--- a/src/lib-http/http-client-private.h	Sun Sep 11 19:34:34 2016 +0200
+++ b/src/lib-http/http-client-private.h	Wed Sep 14 01:26:10 2016 +0200
@@ -332,6 +332,7 @@
 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);