From: Stephan Bosch Date: Sat, 1 Sep 2018 14:40:10 +0000 (+0200) Subject: submission: Move client_proxy_start() to submission-backend-relay.c. X-Git-Tag: 2.3.9~1321 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ead1dcbedb0d284b1d12700ba75dedbcf1a66d45;p=thirdparty%2Fdovecot%2Fcore.git submission: Move client_proxy_start() to submission-backend-relay.c. --- diff --git a/src/submission/submission-backend-relay.c b/src/submission/submission-backend-relay.c index d1410666f5..ed211df426 100644 --- a/src/submission/submission-backend-relay.c +++ b/src/submission/submission-backend-relay.c @@ -677,3 +677,41 @@ int cmd_quit_relay(struct client *client, struct smtp_server_cmd_ctx *cmd) relay_cmd_quit_proxy(quit_cmd); return 0; } + +/* + * Relay backend + */ + +static void client_proxy_ready_cb(const struct smtp_reply *reply, + void *context) +{ + struct client *client = context; + enum smtp_capability caps; + + /* check proxy status */ + if ((reply->status / 100) != 2) { + i_error("Failed to establish relay connection: %s", + smtp_reply_log(reply)); + client_destroy(client, + "4.4.0", "Failed to establish relay connection"); + return; + } + + /* propagate capabilities */ + caps = smtp_client_connection_get_capabilities(client->proxy_conn); + caps |= SMTP_CAPABILITY_AUTH | SMTP_CAPABILITY_PIPELINING | + SMTP_CAPABILITY_SIZE | SMTP_CAPABILITY_ENHANCEDSTATUSCODES | + SMTP_CAPABILITY_CHUNKING | SMTP_CAPABILITY_BURL | + SMTP_CAPABILITY_VRFY; + caps &= SUBMISSION_SUPPORTED_SMTP_CAPABILITIES; + smtp_server_connection_set_capabilities(client->conn, caps); + + /* now that we know our capabilities, commence server protocol dialog */ + smtp_server_connection_resume(client->conn); +} + +void client_proxy_start(struct client *client) +{ + smtp_client_connection_connect(client->proxy_conn, + client_proxy_ready_cb, client); +} diff --git a/src/submission/submission-backend-relay.h b/src/submission/submission-backend-relay.h index 14dc38fe6b..df06c082b6 100644 --- a/src/submission/submission-backend-relay.h +++ b/src/submission/submission-backend-relay.h @@ -16,4 +16,6 @@ int cmd_vrfy_relay(struct client *client, struct smtp_server_cmd_ctx *cmd, int cmd_noop_relay(struct client *client, struct smtp_server_cmd_ctx *cmd); int cmd_quit_relay(struct client *client, struct smtp_server_cmd_ctx *cmd); +void client_proxy_start(struct client *client); + #endif diff --git a/src/submission/submission-client.c b/src/submission/submission-client.c index a4c4abcac7..90952582e6 100644 --- a/src/submission/submission-client.c +++ b/src/submission/submission-client.c @@ -23,6 +23,7 @@ #include "smtp-client.h" #include "smtp-client-connection.h" +#include "submission-backend-relay.h" #include "submission-commands.h" #include "submission-settings.h" @@ -82,40 +83,6 @@ static const char *client_remote_id(struct client *client) return addr; } -static void client_proxy_ready_cb(const struct smtp_reply *reply, - void *context) -{ - struct client *client = context; - enum smtp_capability caps; - - /* check proxy status */ - if ((reply->status / 100) != 2) { - i_error("Failed to establish relay connection: %s", - smtp_reply_log(reply)); - client_destroy(client, - "4.4.0", "Failed to establish relay connection"); - return; - } - - /* propagate capabilities */ - caps = smtp_client_connection_get_capabilities(client->proxy_conn); - caps |= SMTP_CAPABILITY_AUTH | SMTP_CAPABILITY_PIPELINING | - SMTP_CAPABILITY_SIZE | SMTP_CAPABILITY_ENHANCEDSTATUSCODES | - SMTP_CAPABILITY_CHUNKING | SMTP_CAPABILITY_BURL | - SMTP_CAPABILITY_VRFY; - caps &= SUBMISSION_SUPPORTED_SMTP_CAPABILITIES; - smtp_server_connection_set_capabilities(client->conn, caps); - - /* now that we know our capabilities, commence server protocol dialog */ - smtp_server_connection_resume(client->conn); -} - -static void client_proxy_start(struct client *client) -{ - smtp_client_connection_connect(client->proxy_conn, - client_proxy_ready_cb, client); -} - static void client_proxy_create(struct client *client, const struct submission_settings *set) {