]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
submission: Allocate each recipient object on its own pool.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Tue, 25 Sep 2018 00:11:46 +0000 (02:11 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Thu, 11 Oct 2018 11:10:35 +0000 (11:10 +0000)
This allows allocating per recipient module data.

src/submission/submission-recipient.c
src/submission/submission-recipient.h

index bb48c20ff61674bf273078bcbda32dfceeaaa57c..18e9e477be4963d7ac8141f73cbc1e6f17f3da4c 100644 (file)
@@ -9,8 +9,11 @@ struct submission_recipient *
 submission_recipient_create(struct client *client, struct smtp_address *path)
 {
        struct submission_recipient *rcpt;
+       pool_t pool;
 
-       rcpt = i_new(struct submission_recipient, 1);
+       pool = pool_alloconly_create("submission recipient", 512);
+       rcpt = p_new(pool, struct submission_recipient, 1);
+       rcpt->pool = pool;
        rcpt->backend = client->state.backend;
        rcpt->path = path;
 
@@ -23,7 +26,7 @@ void submission_recipient_destroy(struct submission_recipient **_rcpt)
 
        *_rcpt = NULL;
 
-       i_free(rcpt);
+       pool_unref(&rcpt->pool);
 }
 
 void submission_recipient_finished(struct submission_recipient *rcpt,
index 1ce9e424232f3f399494599d4587892374d1637a..7b59f7d286cab8d18caa050b74fddcd1392697e6 100644 (file)
@@ -5,6 +5,8 @@ struct submission_backend;
 struct client;
 
 struct submission_recipient {
+       pool_t pool;
+
        struct submission_backend *backend;
 
        struct smtp_address *path;