]> source.dussan.org Git - rspamd.git/commitdiff
[Rework] Separate method to close backend connections
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 6 May 2016 14:40:50 +0000 (15:40 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 6 May 2016 14:40:50 +0000 (15:40 +0100)
src/rspamd_proxy.c

index ef85728e32310a5229b7f763a30cbaf861471c83..d2c4ee3d4e3db69ee490ca4ea540cd373719b3f6 100644 (file)
@@ -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);
        }