aboutsummaryrefslogtreecommitdiffstats
path: root/src/libserver/task.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-05-06 12:27:52 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2016-05-06 12:32:52 +0100
commite7434337e6282ab12fb5637124fb4a3773bfb755 (patch)
tree06f6070a6f57a6b3609ed1cbd92426e0f808fe59 /src/libserver/task.c
parent6eb43010cb8fa0f2b4b0a0a33433bf58061a11b4 (diff)
downloadrspamd-e7434337e6282ab12fb5637124fb4a3773bfb755.tar.gz
rspamd-e7434337e6282ab12fb5637124fb4a3773bfb755.zip
[Fix] Remove event before closing of fd to avoid race conditions
Diffstat (limited to 'src/libserver/task.c')
-rw-r--r--src/libserver/task.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/libserver/task.c b/src/libserver/task.c
index eca443c62..c76209cae 100644
--- a/src/libserver/task.c
+++ b/src/libserver/task.c
@@ -214,13 +214,10 @@ rspamd_task_free (struct rspamd_task *task)
}
if (task->http_conn != NULL) {
+ rspamd_http_connection_reset (task->http_conn);
rspamd_http_connection_unref (task->http_conn);
}
- if (task->sock != -1) {
- close (task->sock);
- }
-
if (task->settings != NULL) {
ucl_object_unref (task->settings);
}
@@ -245,6 +242,10 @@ rspamd_task_free (struct rspamd_task *task)
event_del (task->guard_ev);
}
+ if (task->sock != -1) {
+ close (task->sock);
+ }
+
rspamd_re_cache_runtime_destroy (task->re_rt);
REF_RELEASE (task->cfg);