]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: smtp-client-connection - Add smtp_client_connection_transactions_fail(...
authorStephan Bosch <stephan.bosch@open-xchange.com>
Thu, 22 Apr 2021 10:03:59 +0000 (12:03 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Fri, 21 May 2021 20:20:48 +0000 (20:20 +0000)
Use it to always fail the whole transaction first before the individual commands
if possible.

src/lib-smtp/smtp-client-connection.c

index 56864c04f532a333f543ce2d44a929e1e6c8f213..c273630f4a607e4d2c7ef0f391cb477606072e82 100644 (file)
@@ -182,6 +182,19 @@ smtp_client_connection_transactions_fail_reply(
        }
 }
 
+static void
+smtp_client_connection_transactions_fail(
+       struct smtp_client_connection *conn,
+       unsigned int status, const char *error)
+{
+       struct smtp_reply reply;
+
+       smtp_reply_init(&reply, status, error);
+       reply.enhanced_code.x = 9;
+
+       smtp_client_connection_transactions_fail_reply(conn, &reply);
+}
+
 static void
 smtp_client_connection_login_callback(struct smtp_client_connection *conn,
                                      const struct smtp_reply *reply)
@@ -1959,6 +1972,9 @@ void smtp_client_connection_disconnect(struct smtp_client_connection *conn)
                smtp_client_connection_login_fail(
                        conn, SMTP_CLIENT_COMMAND_ERROR_ABORTED,
                        "Disconnected from server");
+               smtp_client_connection_transactions_fail(
+                       conn,  SMTP_CLIENT_COMMAND_ERROR_ABORTED,
+                       "Disconnected from server");
                smtp_client_connection_commands_fail(
                        conn, SMTP_CLIENT_COMMAND_ERROR_ABORTED,
                        "Disconnected from server");
@@ -2187,6 +2203,9 @@ void smtp_client_connection_unref(struct smtp_client_connection **_conn)
        smtp_client_connection_login_fail(
                conn, SMTP_CLIENT_COMMAND_ERROR_ABORTED,
                "Connection destroy");
+       smtp_client_connection_transactions_fail(
+               conn,  SMTP_CLIENT_COMMAND_ERROR_ABORTED,
+               "Connection destroy");
        smtp_client_connection_commands_fail(
                conn, SMTP_CLIENT_COMMAND_ERROR_ABORTED,
                "Connection destroy");