From: Vsevolod Stakhov Date: Fri, 6 May 2016 14:40:50 +0000 (+0100) Subject: [Rework] Separate method to close backend connections X-Git-Tag: 1.3.0~532^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2edd04a92edb4bbeca105dffa5367151fcb699d5;p=thirdparty%2Frspamd.git [Rework] Separate method to close backend connections --- diff --git a/src/rspamd_proxy.c b/src/rspamd_proxy.c index ef85728e32..d2c4ee3d4e 100644 --- a/src/rspamd_proxy.c +++ b/src/rspamd_proxy.c @@ -441,14 +441,20 @@ init_rspamd_proxy (struct rspamd_config *cfg) return ctx; } +static void +proxy_session_close_connection (struct rspamd_proxy_backend_connection *conn) +{ + if (conn->backend_conn) { + rspamd_http_connection_unref (conn->backend_conn); + } + close (conn->backend_sock); +} + static void proxy_session_dtor (struct rspamd_proxy_session *session) { if (session->master_conn) { - if (session->master_conn->backend_conn) { - rspamd_http_connection_unref (session->master_conn->backend_conn); - } - close (session->master_conn->backend_sock); + proxy_session_close_connection (session->master_conn); } if (session->map && session->map_len) { @@ -682,6 +688,8 @@ proxy_client_finish_handler (struct rspamd_http_connection *conn, } } else { + proxy_session_close_connection (session->master_conn); + session->master_conn = NULL; REF_RELEASE (session); }