]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: smtp-client-transaction - Add smtp_client_command_mail_submit_after().
authorStephan Bosch <stephan.bosch@open-xchange.com>
Mon, 10 Jan 2022 02:53:41 +0000 (03:53 +0100)
committerMartti Rannanjärvi <martti.rannanjarvi@open-xchange.com>
Fri, 21 Jan 2022 07:36:24 +0000 (09:36 +0200)
src/lib-smtp/smtp-client-command.c
src/lib-smtp/smtp-client-command.h

index a41708d27f78ab161670e5ff8c44078e280c37f1..9eaf76d26be2de35d3314fd5779eb40062f5c0bd 100644 (file)
@@ -1122,14 +1122,15 @@ smtp_client_command_rset_submit(struct smtp_client_connection *conn,
 
 /* MAIL FROM: */
 
-#undef smtp_client_command_mail_submit
+#undef smtp_client_command_mail_submit_after
 struct smtp_client_command *
-smtp_client_command_mail_submit(struct smtp_client_connection *conn,
-                               enum smtp_client_command_flags flags,
-                               const struct smtp_address *from,
-                               const struct smtp_params_mail *params,
-                               smtp_client_command_callback_t *callback,
-                               void *context)
+smtp_client_command_mail_submit_after(struct smtp_client_connection *conn,
+                                     enum smtp_client_command_flags flags,
+                                     struct smtp_client_command *after,
+                                     const struct smtp_address *from,
+                                     const struct smtp_params_mail *params,
+                                     smtp_client_command_callback_t *callback,
+                                     void *context)
 {
        struct smtp_client_command *cmd;
 
@@ -1161,10 +1162,24 @@ smtp_client_command_mail_submit(struct smtp_client_connection *conn,
                if (str_len(cmd->data) == orig_len + 1)
                        str_truncate(cmd->data, orig_len);
        }
-       smtp_client_command_submit(cmd);
+       smtp_client_command_submit_after(cmd, after);
        return cmd;
 }
 
+#undef smtp_client_command_mail_submit
+struct smtp_client_command *
+smtp_client_command_mail_submit(struct smtp_client_connection *conn,
+                               enum smtp_client_command_flags flags,
+                               const struct smtp_address *from,
+                               const struct smtp_params_mail *params,
+                               smtp_client_command_callback_t *callback,
+                               void *context)
+{
+       return smtp_client_command_mail_submit_after(conn, flags, NULL,
+                                                    from, params,
+                                                    callback, context);
+}
+
 /* RCPT TO: */
 
 #undef smtp_client_command_rcpt_submit_after
index aae0a3bfb36ab00d17c0e1bdad5a2207626dacf8..70dba928db3f51f338ea23d0f194902fdcbeb280 100644 (file)
@@ -180,6 +180,22 @@ smtp_client_command_rset_submit(struct smtp_client_connection *conn,
 
 /* Send MAIL FROM:<address> <params...> */
 struct smtp_client_command *
+smtp_client_command_mail_submit_after(struct smtp_client_connection *conn,
+                                     enum smtp_client_command_flags flags,
+                                     struct smtp_client_command *after,
+                                     const struct smtp_address *from,
+                                     const struct smtp_params_mail *params,
+                                     smtp_client_command_callback_t *callback,
+                                     void *context);
+#define smtp_client_command_mail_submit_after(conn, flags, after, \
+                                             address, params, \
+                                             callback, context) \
+       smtp_client_command_mail_submit_after(conn, flags - \
+               CALLBACK_TYPECHECK(callback, void (*)( \
+                       const struct smtp_reply *reply, typeof(context))), \
+               after, address, params, \
+               (smtp_client_command_callback_t *)callback, context)
+struct smtp_client_command *
 smtp_client_command_mail_submit(struct smtp_client_connection *conn,
                                enum smtp_client_command_flags flags,
                                const struct smtp_address *from,