From: Stephan Bosch Date: Sat, 15 Sep 2018 13:29:40 +0000 (+0200) Subject: submission: relay backend: Turn client_proxy_create() into a proper backend constructor. X-Git-Tag: 2.3.9~1295 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=03c230d20808be53a427aba34a8ccd4870af945e;p=thirdparty%2Fdovecot%2Fcore.git submission: relay backend: Turn client_proxy_create() into a proper backend constructor. --- diff --git a/src/submission/submission-backend-relay.c b/src/submission/submission-backend-relay.c index 9f556b82da..e440d9ad21 100644 --- a/src/submission/submission-backend-relay.c +++ b/src/submission/submission-backend-relay.c @@ -745,8 +745,9 @@ backend_relay_cmd_quit(struct submission_backend *_backend, * Relay backend */ -void client_proxy_create(struct client *client, - const struct submission_settings *set) +struct submission_backend * +submission_backend_relay_create(struct client *client, + const struct submission_settings *set) { struct submission_backend_relay *backend; struct mail_user *user = client->user; @@ -754,7 +755,7 @@ void client_proxy_create(struct client *client, struct smtp_client_settings smtp_set; enum smtp_client_connection_ssl_mode ssl_mode; - backend = &client->backend; + backend = i_new(struct submission_backend_relay, 1); submission_backend_init(&backend->backend, client, &backend_relay_vfuncs); @@ -804,6 +805,8 @@ void client_proxy_create(struct client *client, backend->conn = smtp_client_connection_create( smtp_client, SMTP_PROTOCOL_SMTP, set->submission_relay_host, set->submission_relay_port, ssl_mode, &smtp_set); + + return &backend->backend; } static void backend_relay_destroy(struct submission_backend *_backend) @@ -813,6 +816,7 @@ static void backend_relay_destroy(struct submission_backend *_backend) if (backend->conn != NULL) smtp_client_connection_close(&backend->conn); + i_free(backend); } static void backend_relay_ready_cb(const struct smtp_reply *reply, diff --git a/src/submission/submission-backend-relay.h b/src/submission/submission-backend-relay.h index f2e2d48daa..eadf296d4d 100644 --- a/src/submission/submission-backend-relay.h +++ b/src/submission/submission-backend-relay.h @@ -15,7 +15,8 @@ struct submission_backend_relay { bool xclient_sent:1; }; -void client_proxy_create(struct client *client, - const struct submission_settings *set); +struct submission_backend * +submission_backend_relay_create(struct client *client, + const struct submission_settings *set); #endif diff --git a/src/submission/submission-client.c b/src/submission/submission-client.c index b9f2502361..7e5860aabf 100644 --- a/src/submission/submission-client.c +++ b/src/submission/submission-client.c @@ -125,8 +125,8 @@ static void client_create_backend_default(struct client *client, const struct submission_settings *set) { - client_proxy_create(client, set); - client->backend_default = &client->backend.backend; + client->backend_default = + submission_backend_relay_create(client, set); } static void client_init_urlauth(struct client *client) diff --git a/src/submission/submission-client.h b/src/submission/submission-client.h index 0a9283c207..11e1c582cb 100644 --- a/src/submission/submission-client.h +++ b/src/submission/submission-client.h @@ -2,7 +2,6 @@ #define CLIENT_H #include "net.h" -#include "submission-backend-relay.h" struct smtp_reply; @@ -38,7 +37,6 @@ struct client { struct smtp_server_stats stats; enum smtp_capability backend_capabilities; - struct submission_backend_relay backend; struct submission_backend *backend_default; struct submission_backend *backends; unsigned int backends_count;