From: Stephan Bosch Date: Sun, 16 Sep 2018 19:15:20 +0000 (+0200) Subject: submission: Allocate client on alloconly mempool. X-Git-Tag: 2.3.9~1236 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=23f2178c439478aa4377923898fe7d661dd57053;p=thirdparty%2Fdovecot%2Fcore.git submission: Allocate client on alloconly mempool. --- diff --git a/src/submission/submission-client.c b/src/submission/submission-client.c index 1d80074e31..bdda207f00 100644 --- a/src/submission/submission-client.c +++ b/src/submission/submission-client.c @@ -186,16 +186,19 @@ struct client *client_create(int fd_in, int fd_out, struct smtp_server_settings smtp_set; const char *ident; struct client *client; + pool_t pool; /* always use nonblocking I/O */ net_set_nonblock(fd_in, TRUE); net_set_nonblock(fd_out, TRUE); - client = i_new(struct client, 1); + pool = pool_alloconly_create("submission client", 2048); + client = p_new(pool, struct client, 1); + client->pool = pool; client->user = user; client->service_user = service_user; client->set = set; - client->session_id = i_strdup(session_id); + client->session_id = p_strdup(pool, session_id); i_array_init(&client->rcpt_to, 8); i_array_init(&client->rcpt_backends, 8); @@ -302,8 +305,7 @@ void client_destroy(struct client *client, const char *prefix, client_state_reset(client); - i_free(client->session_id); - i_free(client); + pool_unref(&client->pool); master_service_client_connection_destroyed(master_service); submission_refresh_proctitle(); diff --git a/src/submission/submission-client.h b/src/submission/submission-client.h index 71be61393b..a18b5d706a 100644 --- a/src/submission/submission-client.h +++ b/src/submission/submission-client.h @@ -17,7 +17,9 @@ struct client_state { struct client { struct client *prev, *next; - char *session_id; + pool_t pool; + + const char *session_id; const struct setting_parser_info *user_set_info; const struct submission_settings *set;