summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreric <eric@openbsd.org>2016-06-15 21:52:47 +0000
committereric <eric@openbsd.org>2016-06-15 21:52:47 +0000
commitb365c9826aa56e1048ba1c75be4ad525276e2a0f (patch)
tree4da34895def27f0a41a35d5b66b6890a395ea33c
parentincrease number of connections a local address is allowed to establish (diff)
downloadwireguard-openbsd-b365c9826aa56e1048ba1c75be4ad525276e2a0f.tar.xz
wireguard-openbsd-b365c9826aa56e1048ba1c75be4ad525276e2a0f.zip
properly reset the transaction when a filter rejects a message.
ok gilles@
-rw-r--r--usr.sbin/smtpd/smtp_session.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/usr.sbin/smtpd/smtp_session.c b/usr.sbin/smtpd/smtp_session.c
index 2be0c0046e4..559cf408384 100644
--- a/usr.sbin/smtpd/smtp_session.c
+++ b/usr.sbin/smtpd/smtp_session.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: smtp_session.c,v 1.274 2016/06/15 19:56:07 gilles Exp $ */
+/* $OpenBSD: smtp_session.c,v 1.275 2016/06/15 21:52:47 eric Exp $ */
/*
* Copyright (c) 2008 Gilles Chehade <gilles@poolp.org>
@@ -1150,9 +1150,12 @@ smtp_filter_response(uint64_t id, int query, int status, uint32_t code,
if (status != FILTER_OK) {
tree_pop(&wait_filter_data, s->id);
smtp_filter_rollback(s);
+ smtp_queue_rollback(s);
code = code ? code : 530;
line = line ? line : "Message rejected";
smtp_reply(s, "%d %s", code, line);
+ smtp_message_reset(s, 0);
+ smtp_enter_state(s, STATE_HELO);
io_reload(&s->io);
return;
}