]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-http: client: peer: Moved http_client_peer_disconnect() function.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sun, 18 Dec 2016 17:41:37 +0000 (18:41 +0100)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Thu, 7 Dec 2017 16:40:45 +0000 (18:40 +0200)
This is a preparation for a subsequent change.

src/lib-http/http-client-peer.c

index dc25d0668003a34da94ef1a11fdaa21819cfcff0..ec5789b7926a3886f30dc94b2fb45b442b527035 100644 (file)
@@ -261,6 +261,43 @@ http_client_peer_create(struct http_client *client,
        return peer;
 }
 
+static void
+http_client_peer_disconnect(struct http_client_peer *peer)
+{
+       struct http_client_connection **conn;
+       ARRAY_TYPE(http_client_connection) conns;
+       struct http_client_queue *const *queue;
+
+       if (peer->disconnected)
+               return;
+       peer->disconnected = TRUE;
+
+       http_client_peer_debug(peer, "Peer disconnect");
+
+       /* make a copy of the connection array; freed connections modify it */
+       t_array_init(&conns, array_count(&peer->conns));
+       array_copy(&conns.arr, 0, &peer->conns.arr, 0, array_count(&peer->conns));
+       array_foreach_modifiable(&conns, conn) {
+               http_client_connection_peer_closed(conn);
+       }
+       i_assert(array_count(&peer->conns) == 0);
+
+       if (peer->to_req_handling != NULL)
+               timeout_remove(&peer->to_req_handling);
+       if (peer->to_backoff != NULL)
+               timeout_remove(&peer->to_backoff);
+
+       /* unlist in client */
+       hash_table_remove
+               (peer->client->peers, (const struct http_client_peer_addr *)&peer->addr);
+       DLLIST_REMOVE(&peer->client->peers_list, peer);
+
+       /* unlink all queues */
+       array_foreach(&peer->queues, queue)
+               http_client_queue_peer_disconnected(*queue, peer);
+       array_clear(&peer->queues);
+}
+
 static void
 http_client_peer_do_connect(struct http_client_peer *peer,
        unsigned int count)
@@ -691,43 +728,6 @@ void http_client_peer_trigger_request_handler(struct http_client_peer *peer)
        }
 }
 
-static void
-http_client_peer_disconnect(struct http_client_peer *peer)
-{
-       struct http_client_connection **conn;
-       ARRAY_TYPE(http_client_connection) conns;
-       struct http_client_queue *const *queue;
-
-       if (peer->disconnected)
-               return;
-       peer->disconnected = TRUE;
-
-       http_client_peer_debug(peer, "Peer disconnect");
-
-       /* make a copy of the connection array; freed connections modify it */
-       t_array_init(&conns, array_count(&peer->conns));
-       array_copy(&conns.arr, 0, &peer->conns.arr, 0, array_count(&peer->conns));
-       array_foreach_modifiable(&conns, conn) {
-               http_client_connection_peer_closed(conn);
-       }
-       i_assert(array_count(&peer->conns) == 0);
-
-       if (peer->to_req_handling != NULL)
-               timeout_remove(&peer->to_req_handling);
-       if (peer->to_backoff != NULL)
-               timeout_remove(&peer->to_backoff);
-
-       /* unlist in client */
-       hash_table_remove
-               (peer->client->peers, (const struct http_client_peer_addr *)&peer->addr);
-       DLLIST_REMOVE(&peer->client->peers_list, peer);
-
-       /* unlink all queues */
-       array_foreach(&peer->queues, queue)
-               http_client_queue_peer_disconnected(*queue, peer);
-       array_clear(&peer->queues);
-}
-
 void http_client_peer_ref(struct http_client_peer *peer)
 {
        peer->refcount++;