From b49e6ceb5c3ad19575bb692702598b544f2292bb Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 12 Jun 2018 11:59:10 +0100 Subject: [PATCH] [Fix] Fix potential race condition for a finished HTTP connections --- src/libutil/http.c | 17 +++++++++++++++-- 1 file 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); -- 2.39.5