summaryrefslogtreecommitdiffstats
path: root/src/rspamd_proxy.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-05-06 15:40:50 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2016-05-06 15:40:50 +0100
commit2edd04a92edb4bbeca105dffa5367151fcb699d5 (patch)
tree37bcb68916a744897773cfaf0c51ecef9b5e5e10 /src/rspamd_proxy.c
parent4aff515297321488a4383d7d660ffba4faa3e421 (diff)
downloadrspamd-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.c16
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);
}