diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-05-06 15:40:50 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-05-06 15:40:50 +0100 |
commit | 2edd04a92edb4bbeca105dffa5367151fcb699d5 (patch) | |
tree | 37bcb68916a744897773cfaf0c51ecef9b5e5e10 /src/rspamd_proxy.c | |
parent | 4aff515297321488a4383d7d660ffba4faa3e421 (diff) | |
download | rspamd-2edd04a92edb4bbeca105dffa5367151fcb699d5.tar.gz rspamd-2edd04a92edb4bbeca105dffa5367151fcb699d5.zip |
[Rework] Separate method to close backend connections
Diffstat (limited to 'src/rspamd_proxy.c')
-rw-r--r-- | src/rspamd_proxy.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/rspamd_proxy.c b/src/rspamd_proxy.c index ef85728e3..d2c4ee3d4 100644 --- a/src/rspamd_proxy.c +++ b/src/rspamd_proxy.c @@ -442,13 +442,19 @@ init_rspamd_proxy (struct rspamd_config *cfg) } 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); } |