diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-06-12 11:59:10 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-06-12 11:59:10 +0100 |
commit | b49e6ceb5c3ad19575bb692702598b544f2292bb (patch) | |
tree | f5d4f89b277373c91a8eb0a82f409ddc13a4e3f6 /src/libutil | |
parent | 43cad9b9ee5dab8dda2058cd4b6b4140699ce614 (diff) | |
download | rspamd-b49e6ceb5c3ad19575bb692702598b544f2292bb.tar.gz rspamd-b49e6ceb5c3ad19575bb692702598b544f2292bb.zip |
[Fix] Fix potential race condition for a finished HTTP connections
Diffstat (limited to 'src/libutil')
-rw-r--r-- | src/libutil/http.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/libutil/http.c b/src/libutil/http.c index 03dbaa7bd..315598871 100644 --- a/src/libutil/http.c +++ b/src/libutil/http.c @@ -1183,7 +1183,13 @@ rspamd_http_event_handler (int fd, short what, gpointer ud) http_errno_description (priv->parser.http_errno)); } - conn->error_handler (conn, err); + if (!conn->finished) { + conn->error_handler (conn, err); + } + else { + msg_err ("got error after HTTP request is finished: %e", err); + } + g_error_free (err); REF_RELEASE (pbuf); @@ -1234,7 +1240,14 @@ rspamd_http_event_handler (int fd, short what, gpointer ud) err = g_error_new (HTTP_ERROR, priv->parser.http_errno, "HTTP parser error: %s", http_errno_description (priv->parser.http_errno)); - conn->error_handler (conn, err); + + if (!conn->finished) { + conn->error_handler (conn, err); + } + else { + msg_err ("got error after HTTP request is finished: %e", err); + } + g_error_free (err); REF_RELEASE (pbuf); |