]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: Add smtp_server_connection_terminate_full()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 21 Feb 2024 21:21:11 +0000 (23:21 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Sun, 25 Feb 2024 17:28:04 +0000 (17:28 +0000)
src/lib-smtp/smtp-server-connection.c
src/lib-smtp/smtp-server.h

index 60dd0b3df54af67f325df8a38aed39239ce017f6..f3ab38be8916a21fcc060b54fdcb15975f8fa23c 100644 (file)
@@ -1313,6 +1313,14 @@ void smtp_server_connection_close(struct smtp_server_connection **_conn,
 
 void smtp_server_connection_terminate(struct smtp_server_connection **_conn,
                                      const char *enh_code, const char *reason)
+{
+       smtp_server_connection_terminate_full(_conn, enh_code, reason, reason);
+}
+
+void smtp_server_connection_terminate_full(struct smtp_server_connection **_conn,
+                                          const char *enh_code,
+                                          const char *reply_reason,
+                                          const char *log_reason)
 {
        struct smtp_server_connection *conn = *_conn;
        const char **reason_lines;
@@ -1326,14 +1334,14 @@ void smtp_server_connection_terminate(struct smtp_server_connection **_conn,
 
        T_BEGIN {
                /* Add hostname prefix */
-               reason_lines = t_strsplit_spaces(reason, "\r\n");
+               reason_lines = t_strsplit_spaces(reply_reason, "\r\n");
                reason_lines[0] = t_strconcat(conn->set.hostname, " ",
                                              reason_lines[0], NULL);
 
                smtp_server_connection_reply_lines(conn, 421, enh_code,
                                                   reason_lines);
 
-               smtp_server_connection_close(&conn, reason);
+               smtp_server_connection_close(&conn, log_reason);
        } T_END;
 }
 
index 9d74bdfec26338189094ebe0b7d7638f1150e3ef..fc869baed63865c3c4bac27f470321fb829a3f38 100644 (file)
@@ -476,6 +476,10 @@ void smtp_server_connection_close(struct smtp_server_connection **_conn,
 void smtp_server_connection_terminate(struct smtp_server_connection **_conn,
                                      const char *enh_code, const char *reason)
                                      ATTR_NULL(3);
+void smtp_server_connection_terminate_full(struct smtp_server_connection **_conn,
+                                          const char *enh_code,
+                                          const char *reply_reason,
+                                          const char *log_reason);
 
 bool smtp_server_connection_data_check_state(struct smtp_server_cmd_ctx *cmd);
 void smtp_server_connection_data_chunk_init(struct smtp_server_cmd_ctx *cmd);