From: Stephan Bosch Date: Fri, 12 Oct 2018 08:01:12 +0000 (+0200) Subject: submission: relay backend: Use (potentially) modified reply after backend_relay_handl... X-Git-Tag: 2.3.9~1191 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3a804e7bc0792e69ab5ed8286dfa6341f598c12b;p=thirdparty%2Fdovecot%2Fcore.git submission: relay backend: Use (potentially) modified reply after backend_relay_handle_relay_reply(). Before, it sometimes still referred to the original reply struct from the client callback. --- diff --git a/src/submission/submission-backend-relay.c b/src/submission/submission-backend-relay.c index 078c4d88f9..328d4d6fe1 100644 --- a/src/submission/submission-backend-relay.c +++ b/src/submission/submission-backend-relay.c @@ -205,7 +205,7 @@ relay_cmd_helo_callback(const struct smtp_reply *relay_reply, if (!backend_relay_handle_relay_reply(backend, relay_reply, &reply)) return; - if (smtp_reply_is_success(relay_reply)) { + if (smtp_reply_is_success(&reply)) { relay_cmd_helo_reply(cmd, helo); } else { /* RFC 2034, Section 4: @@ -460,9 +460,9 @@ relay_cmd_rcpt_callback(const struct smtp_reply *relay_reply, if (!backend_relay_handle_relay_reply(backend, relay_reply, &reply)) return; - if (smtp_reply_is_success(relay_reply)) { + if (smtp_reply_is_success(&reply)) { /* the default 2.0.0 code won't do */ - if (!smtp_reply_has_enhanced_code(relay_reply)) + if (!smtp_reply_has_enhanced_code(&reply)) reply.enhanced_code = SMTP_REPLY_ENH_CODE(2, 1, 5); } @@ -583,21 +583,21 @@ relay_cmd_data_callback(const struct smtp_reply *relay_reply, if (!backend_relay_handle_relay_reply(backend, relay_reply, &reply)) return; - if (smtp_reply_is_success(relay_reply)) { + if (smtp_reply_is_success(&reply)) { i_info("Successfully relayed message: " "from=<%s>, size=%"PRIuUOFF_T", " "id=%s, nrcpt=%u, reply=`%s'", smtp_address_encode(trans->mail_from), client->state.data_size, trans->id, array_count(&trans->rcpt_to), - str_sanitize(smtp_reply_log(relay_reply), 128)); + str_sanitize(smtp_reply_log(&reply), 128)); } else { i_info("Failed to relay message: " "from=<%s>, size=%"PRIuUOFF_T", nrcpt=%u, reply=`%s'", smtp_address_encode(trans->mail_from), client->state.data_size, array_count(&trans->rcpt_to), - str_sanitize(smtp_reply_log(relay_reply), 128)); + str_sanitize(smtp_reply_log(&reply), 128)); } smtp_server_reply_forward(cmd, &reply); @@ -649,7 +649,7 @@ relay_cmd_vrfy_callback(const struct smtp_reply *relay_reply, if (!backend_relay_handle_relay_reply(backend, relay_reply, &reply)) return; - if (!smtp_reply_has_enhanced_code(relay_reply)) { + if (!smtp_reply_has_enhanced_code(&reply)) { switch (relay_reply->status) { case 250: case 251: @@ -704,7 +704,7 @@ relay_cmd_noop_callback(const struct smtp_reply *relay_reply, if (!backend_relay_handle_relay_reply(backend, relay_reply, &reply)) return; - if (smtp_reply_is_success(relay_reply)) { + if (smtp_reply_is_success(&reply)) { smtp_server_reply(cmd, 250, "2.0.0", "OK"); } else { smtp_server_reply_forward(cmd, &reply);