Mercurial > dovecot > core-2.2
changeset 11645:f4238836c566 HEAD
imap, pop3: Forced disconnection of client didn't always close connection immediately.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 28 Jun 2010 16:25:35 +0100 |
parents | be2b7d2901a0 |
children | b2aca3e50f44 |
files | src/imap/imap-client.c src/pop3/pop3-client.c |
diffstat | 2 files changed, 18 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/imap/imap-client.c Mon Jun 28 13:56:39 2010 +0000 +++ b/src/imap/imap-client.c Mon Jun 28 16:25:35 2010 +0100 @@ -227,6 +227,11 @@ imap_refresh_proctitle(); } +static void client_destroy_timeout(struct client *client) +{ + client_destroy(client, NULL); +} + void client_disconnect(struct client *client, const char *reason) { i_assert(reason != NULL); @@ -240,6 +245,10 @@ i_stream_close(client->input); o_stream_close(client->output); + + if (client->to_idle != NULL) + timeout_remove(&client->to_idle); + client->to_idle = timeout_add(0, client_destroy_timeout, client); } void client_disconnect_with_error(struct client *client, const char *msg)
--- a/src/pop3/pop3-client.c Mon Jun 28 13:56:39 2010 +0000 +++ b/src/pop3/pop3-client.c Mon Jun 28 16:25:35 2010 +0100 @@ -435,6 +435,11 @@ pop3_refresh_proctitle(); } +static void client_destroy_timeout(struct client *client) +{ + client_destroy(client, NULL); +} + void client_disconnect(struct client *client, const char *reason) { if (client->disconnected) @@ -447,6 +452,10 @@ i_stream_close(client->input); o_stream_close(client->output); + + if (client->to_idle != NULL) + timeout_remove(&client->to_idle); + client->to_idle = timeout_add(0, client_destroy_timeout, client); } int client_send_line(struct client *client, const char *fmt, ...)