]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Terminate milter session on IO errors
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 22 Nov 2019 15:49:28 +0000 (15:49 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 22 Nov 2019 15:49:28 +0000 (15:49 +0000)
Issue: #3149

src/libserver/milter.c

index e97b0381eccc2f28a0397b4e5728d8b6c5debee4..1b24fa3dae9cccd697eaa4ae125235d3aaca5b66 100644 (file)
@@ -955,6 +955,8 @@ rspamd_milter_handle_session (struct rspamd_milter_session *session,
                if (r == -1) {
                        if (errno == EAGAIN || errno == EINTR) {
                                rspamd_milter_plan_io (session, priv, EV_READ);
+
+                               return TRUE;
                        }
                        else {
                                /* Fatal IO error */
@@ -964,6 +966,10 @@ rspamd_milter_handle_session (struct rspamd_milter_session *session,
                                priv->err_cb (priv->fd, session, priv->ud, err);
                                REF_RELEASE (session);
                                g_error_free (err);
+
+                               REF_RELEASE (session);
+
+                               return FALSE;
                        }
                }
                else if (r == 0) {
@@ -973,6 +979,10 @@ rspamd_milter_handle_session (struct rspamd_milter_session *session,
                        priv->err_cb (priv->fd, session, priv->ud, err);
                        REF_RELEASE (session);
                        g_error_free (err);
+
+                       REF_RELEASE (session);
+
+                       return FALSE;
                }
                else {
                        priv->parser.buf->len += r;
@@ -1023,6 +1033,8 @@ rspamd_milter_handle_session (struct rspamd_milter_session *session,
                                                REF_RELEASE (session);
                                                g_error_free (err);
 
+                                               REF_RELEASE (session);
+
                                                return FALSE;
                                        }
                                }
@@ -1034,6 +1046,8 @@ rspamd_milter_handle_session (struct rspamd_milter_session *session,
                                        REF_RELEASE (session);
                                        g_error_free (err);
 
+                                       REF_RELEASE (session);
+
                                        return FALSE;
                                }
                                else {