From: Stephan Bosch Date: Sun, 15 Jul 2018 17:00:11 +0000 (+0200) Subject: submission: Move relay part of RSET command to submission-backend-relay.c. X-Git-Tag: 2.3.9~1337 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0cf0912957541e0a4bdfdc3faa54454850dd4f6d;p=thirdparty%2Fdovecot%2Fcore.git submission: Move relay part of RSET command to submission-backend-relay.c. --- diff --git a/src/submission/Makefile.am b/src/submission/Makefile.am index e397c18db9..a39a338227 100644 --- a/src/submission/Makefile.am +++ b/src/submission/Makefile.am @@ -35,7 +35,6 @@ submission_DEPENDENCIES = \ cmds = \ cmd-data.c \ - cmd-rset.c \ cmd-noop.c \ cmd-quit.c \ cmd-vrfy.c diff --git a/src/submission/cmd-rset.c b/src/submission/cmd-rset.c deleted file mode 100644 index a92060c7ee..0000000000 --- a/src/submission/cmd-rset.c +++ /dev/null @@ -1,49 +0,0 @@ -/* Copyright (c) 2013-2018 Dovecot authors, see the included COPYING file */ - -#include "submission-common.h" -#include "smtp-client.h" -#include "smtp-client-connection.h" - -#include "submission-commands.h" - -/* - * RSET command - */ - -struct cmd_rset_context { - struct client *client; - struct smtp_server_cmd_ctx *cmd; - - struct smtp_client_command *cmd_proxied; -}; - -static void cmd_rset_proxy_cb(const struct smtp_reply *proxy_reply, - struct cmd_rset_context *rset_cmd) -{ - struct smtp_server_cmd_ctx *cmd = rset_cmd->cmd; - struct client *client = rset_cmd->client; - struct smtp_reply reply; - - /* finished proxying MAIL command to relay server */ - i_assert(rset_cmd != NULL); - rset_cmd->cmd_proxied = NULL; - - if (!client_command_handle_proxy_reply(client, proxy_reply, &reply)) - return; - - /* forward reply */ - smtp_server_reply_forward(cmd, &reply); -} - -int cmd_rset_relay(struct client *client, struct smtp_server_cmd_ctx *cmd) -{ - struct cmd_rset_context *rset_cmd; - - rset_cmd = p_new(cmd->pool, struct cmd_rset_context, 1); - rset_cmd->cmd = cmd; - rset_cmd->client = client; - - rset_cmd->cmd_proxied = smtp_client_command_rset_submit - (client->proxy_conn, 0, cmd_rset_proxy_cb, rset_cmd); - return 0; -} diff --git a/src/submission/submission-backend-relay.c b/src/submission/submission-backend-relay.c index 300323ca4f..ae785b95a5 100644 --- a/src/submission/submission-backend-relay.c +++ b/src/submission/submission-backend-relay.c @@ -381,3 +381,45 @@ int cmd_rcpt_relay(struct client *client, struct smtp_server_cmd_ctx *cmd, return 0; } +/* + * RSET command + */ + +struct cmd_rset_context { + struct client *client; + struct smtp_server_cmd_ctx *cmd; + + struct smtp_client_command *cmd_proxied; +}; + +static void cmd_rset_proxy_cb(const struct smtp_reply *proxy_reply, + struct cmd_rset_context *rset_cmd) +{ + struct smtp_server_cmd_ctx *cmd = rset_cmd->cmd; + struct client *client = rset_cmd->client; + struct smtp_reply reply; + + /* finished proxying MAIL command to relay server */ + i_assert(rset_cmd != NULL); + rset_cmd->cmd_proxied = NULL; + + if (!client_command_handle_proxy_reply(client, proxy_reply, &reply)) + return; + + /* forward reply */ + smtp_server_reply_forward(cmd, &reply); +} + +int cmd_rset_relay(struct client *client, struct smtp_server_cmd_ctx *cmd) +{ + struct cmd_rset_context *rset_cmd; + + rset_cmd = p_new(cmd->pool, struct cmd_rset_context, 1); + rset_cmd->cmd = cmd; + rset_cmd->client = client; + + rset_cmd->cmd_proxied = smtp_client_command_rset_submit + (client->proxy_conn, 0, cmd_rset_proxy_cb, rset_cmd); + return 0; +} + diff --git a/src/submission/submission-backend-relay.h b/src/submission/submission-backend-relay.h index d97497f16d..804f7f9e85 100644 --- a/src/submission/submission-backend-relay.h +++ b/src/submission/submission-backend-relay.h @@ -7,5 +7,6 @@ int cmd_mail_relay(struct client *client, struct smtp_server_cmd_ctx *cmd, struct smtp_server_cmd_mail *data); int cmd_rcpt_relay(struct client *client, struct smtp_server_cmd_ctx *cmd, struct smtp_server_cmd_rcpt *data); +int cmd_rset_relay(struct client *client, struct smtp_server_cmd_ctx *cmd); #endif diff --git a/src/submission/submission-commands.h b/src/submission/submission-commands.h index 7a9357822c..4e00fbbb30 100644 --- a/src/submission/submission-commands.h +++ b/src/submission/submission-commands.h @@ -4,7 +4,6 @@ bool client_command_handle_proxy_reply(struct client *client, const struct smtp_reply *reply, struct smtp_reply *reply_r); -int cmd_rset_relay(struct client *client, struct smtp_server_cmd_ctx *cmd); int cmd_data_relay(struct client *client, struct smtp_server_cmd_ctx *cmd, struct smtp_server_transaction *trans, struct istream *data_input);