Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6179:5c6af3b74d5f HEAD
If client disconnects in the middle of sending command parameters, don't
crash with "command didn't cancel itself" error.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 06 Aug 2007 19:45:01 +0300 |
parents | 66971adb55e5 |
children | 6b0fe0f93896 |
files | src/imap/client.c |
diffstat | 1 files changed, 5 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/imap/client.c Mon Aug 06 19:29:16 2007 +0300 +++ b/src/imap/client.c Mon Aug 06 19:45:01 2007 +0300 @@ -62,7 +62,7 @@ cmd->cancel = TRUE; cmd_ret = cmd->func == NULL ? TRUE : cmd->func(cmd); - if (!cmd_ret) { + if (!cmd_ret && !cmd->param_error) { if (cmd->client->output->closed) i_panic("command didn't cancel itself: %s", cmd->name); } else { @@ -260,6 +260,10 @@ return TRUE; } else if (ret == -2) { /* need more data */ + if (cmd->client->input->closed) { + /* disconnected */ + cmd->param_error = TRUE; + } return FALSE; } else { /* error, or missing arguments */