summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2014-04-30 17:09:31 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2014-04-30 17:09:31 +0100
commit7cc961501dfae75d2c389e95375de43d2332e444 (patch)
tree9dde4de89a21a3b1326aa4d342fb1f520d4446d3
parent25e9053f5881057057d28450f869423c36748409 (diff)
downloadrspamd-7cc961501dfae75d2c389e95375de43d2332e444.tar.gz
rspamd-7cc961501dfae75d2c389e95375de43d2332e444.zip
Increase HTTP conn refcount during task processing.
-rw-r--r--src/webui.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/webui.c b/src/webui.c
index 685e17604..aa009f9e5 100644
--- a/src/webui.c
+++ b/src/webui.c
@@ -795,10 +795,12 @@ rspamd_webui_learn_fin_task (void *ud)
if (!learn_task_spam (session->cl, task, session->is_spam, &err)) {
rspamd_controller_send_error (conn_ent, 500 + err->code, err->message);
+ rspamd_http_connection_unref (conn_ent->conn);
return TRUE;
}
/* Successful learn */
rspamd_controller_send_string (conn_ent, "{\"success\":true}");
+ rspamd_http_connection_unref (conn_ent->conn);
return TRUE;
}
@@ -813,6 +815,7 @@ rspamd_webui_check_fin_task (void *ud)
task->http_conn = conn_ent->conn;
rspamd_protocol_write_reply (task);
conn_ent->is_reply = TRUE;
+ rspamd_http_connection_unref (conn_ent->conn);
return TRUE;
}
@@ -856,6 +859,7 @@ rspamd_webui_handle_learn_common (struct rspamd_http_connection_entry *conn_ent,
task->resolver = ctx->resolver;
task->ev_base = ctx->ev_base;
+ rspamd_http_connection_ref (conn_ent->conn);
task->s = new_async_session (session->pool, rspamd_webui_learn_fin_task, NULL,
rspamd_task_free_hard, task);
task->s->wanna_die = TRUE;
@@ -936,6 +940,7 @@ rspamd_webui_handle_scan (struct rspamd_http_connection_entry *conn_ent,
task->resolver = ctx->resolver;
task->ev_base = ctx->ev_base;
+ rspamd_http_connection_ref (conn_ent->conn);
task->s = new_async_session (session->pool, rspamd_webui_check_fin_task, NULL,
rspamd_task_free_hard, task);
task->s->wanna_die = TRUE;