static void http_client_connection_input(struct connection *_conn);
-bool http_client_connection_is_ready(struct http_client_connection *conn)
+unsigned int
+http_client_connection_count_pending(struct http_client_connection *conn)
{
unsigned int pending_count = array_count(&conn->request_wait_list);
if (conn->pending_request != NULL)
pending_count++;
+ return pending_count;
+}
+
+bool http_client_connection_is_ready(struct http_client_connection *conn)
+{
return (conn->connected && !conn->output_locked &&
!conn->close_indicated &&
- pending_count < conn->client->set.max_pipelined_requests);
+ http_client_connection_count_pending(conn) <
+ conn->client->set.max_pipelined_requests);
}
bool http_client_connection_is_idle(struct http_client_connection *conn)
/* find the least busy connection */
array_foreach(&peer->conns, conn_idx) {
if (http_client_connection_is_ready(*conn_idx)) {
- unsigned int waiting = array_count(&(*conn_idx)->request_wait_list);
- if ((*conn_idx)->pending_request != NULL)
- waiting++;
+ unsigned int waiting = http_client_connection_count_pending(*conn_idx);
+
if (waiting < min_waiting) {
min_waiting = waiting;
conn = *conn_idx;
http_client_connection_create(struct http_client_peer *peer);
void http_client_connection_ref(struct http_client_connection *conn);
void http_client_connection_unref(struct http_client_connection **_conn);
+unsigned int
+http_client_connection_count_pending(struct http_client_connection *conn);
bool http_client_connection_is_ready(struct http_client_connection *conn);
bool http_client_connection_is_idle(struct http_client_connection *conn);
bool http_client_connection_next_request(struct http_client_connection *conn);