]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
submission: relay backend: Turn client_proxy_create() into a proper backend constructor.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sat, 15 Sep 2018 13:29:40 +0000 (15:29 +0200)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Tue, 12 Feb 2019 13:40:41 +0000 (15:40 +0200)
src/submission/submission-backend-relay.c
src/submission/submission-backend-relay.h
src/submission/submission-client.c
src/submission/submission-client.h

index 9f556b82dab9f97afc4d9c62322171578a8e34c1..e440d9ad210c61de738a55bcb511a006841618b0 100644 (file)
@@ -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,
index f2e2d48daafbd28c02c11eaf00fb1419ccec8b1c..eadf296d4de4fa6c81241e2f2c35814079e7e25e 100644 (file)
@@ -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
index b9f250236153591e7df15215c3a56a722e504723..7e5860aabfe83bfab75d74319c035aad0e2dfd12 100644 (file)
@@ -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)
index 0a9283c20742ec79288a079496acd040a5abb690..11e1c582cbb2675904b34a2c1e2fbdc6fae0eadf 100644 (file)
@@ -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;