From eda1c4f68f460fe9057a3a7e90249b9fa96e687e Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Mon, 11 Dec 2017 10:37:58 +0100 Subject: [PATCH] lib-smtp: server: DATA command: Fixed check for valid recipients in smtp_server_connection_data_check_state(). Can only decide whether we have valid recipients once there are no more pending RCPT commands. --- src/lib-smtp/smtp-server-cmd-data.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/lib-smtp/smtp-server-cmd-data.c b/src/lib-smtp/smtp-server-cmd-data.c index b555a32a6a..74e85f342f 100644 --- a/src/lib-smtp/smtp-server-cmd-data.c +++ b/src/lib-smtp/smtp-server-cmd-data.c @@ -41,12 +41,13 @@ bool smtp_server_connection_data_check_state(struct smtp_server_cmd_ctx *cmd) return FALSE; } + /* Can only decide whether we have valid recipients once there are no + pending RCPT commands */ + if (conn->state.pending_rcpt_cmds > 0) + return TRUE; + /* special handling for LMTP */ if (conn->set.protocol == SMTP_PROTOCOL_LMTP) { - - if (conn->state.pending_rcpt_cmds > 0) - return TRUE; - /* check valid RCPT (at least one) */ if (!smtp_server_transaction_has_rcpt(conn->state.trans)) { if (data_cmd->chunk_size > 0 && data_cmd->chunk_last) { @@ -71,9 +72,8 @@ bool smtp_server_connection_data_check_state(struct smtp_server_cmd_ctx *cmd) } else { /* check valid RCPT (at least one) */ - if ((conn->state.trans == NULL || - !smtp_server_transaction_has_rcpt(conn->state.trans)) - && conn->state.pending_rcpt_cmds == 0) { + if (conn->state.trans == NULL || + !smtp_server_transaction_has_rcpt(conn->state.trans)) { smtp_server_command_fail(command, 554, "5.5.0", "No valid recipients"); return FALSE; -- 2.47.3