From: Stephan Bosch Date: Sun, 18 Dec 2016 17:44:05 +0000 (+0100) Subject: lib-http: client: peer: Moved http_client_peer_unref() function. X-Git-Tag: 2.3.0.rc1~259 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0dfe37d8e4c03dc39c600ca8a5c9aba429a30b91;p=thirdparty%2Fdovecot%2Fcore.git lib-http: client: peer: Moved http_client_peer_unref() function. This is a preparation for a subsequent change. --- diff --git a/src/lib-http/http-client-peer.c b/src/lib-http/http-client-peer.c index 1af419df25..9a7ec1582b 100644 --- a/src/lib-http/http-client-peer.c +++ b/src/lib-http/http-client-peer.c @@ -303,6 +303,33 @@ http_client_peer_disconnect(struct http_client_peer *peer) array_clear(&peer->queues); } +bool http_client_peer_unref(struct http_client_peer **_peer) +{ + struct http_client_peer *peer = *_peer; + struct http_client_peer_pool *ppool = peer->ppool; + + i_assert(peer->refcount > 0); + + *_peer = NULL; + + if (--peer->refcount > 0) + return TRUE; + + http_client_peer_debug(peer, "Peer destroy"); + + http_client_peer_disconnect(peer); + http_client_peer_pool_unref(&ppool); + + i_assert(array_count(&peer->queues) == 0); + + array_free(&peer->conns); + array_free(&peer->queues); + i_free(peer->addr_name); + i_free(peer->label); + i_free(peer); + return FALSE; +} + static void http_client_peer_do_connect(struct http_client_peer *peer, unsigned int count) @@ -733,33 +760,6 @@ void http_client_peer_trigger_request_handler(struct http_client_peer *peer) } } -bool http_client_peer_unref(struct http_client_peer **_peer) -{ - struct http_client_peer *peer = *_peer; - - i_assert(peer->refcount > 0); - - *_peer = NULL; - - if (--peer->refcount > 0) - return TRUE; - - http_client_peer_debug(peer, "Peer destroy"); - - http_client_peer_disconnect(peer); - http_client_peer_pool_unref(&peer->ppool); - - i_assert(array_count(&peer->queues) == 0); - - array_free(&peer->conns); - array_free(&peer->queues); - i_free(peer->addr_name); - i_free(peer->label); - i_free(peer); - - return FALSE; -} - void http_client_peer_close(struct http_client_peer **_peer) { struct http_client_peer *peer = *_peer;