From: Kevin McCarthy Date: Sun, 15 Oct 2017 07:13:18 +0000 (+0800) Subject: Add polling for the IDLE command. (closes #3957) X-Git-Tag: neomutt-20171027~34 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8b0bd49444a9ce724c6e5ad0507237f8464ae9f2;p=neomutt Add polling for the IDLE command. (closes #3957) Add $imap_poll_timeout poll for IDLE, since this is also a command that will freeze after waking if $imap_idle is set. --- diff --git a/imap/command.c b/imap/command.c index 4b0cf5767..14f88eac5 100644 --- a/imap/command.c +++ b/imap/command.c @@ -1142,7 +1142,20 @@ int imap_cmd_idle(struct ImapData *idata) { int rc; - imap_cmd_start(idata, "IDLE"); + if (cmd_start(idata, "IDLE", IMAP_CMD_POLL) < 0) + { + cmd_handle_fatal(idata); + return -1; + } + + if ((ImapPollTimeout > 0) && (mutt_socket_poll(idata->conn, ImapPollTimeout)) == 0) + { + mutt_error(_("Connection to %s timed out"), idata->conn->account.host); + mutt_sleep(2); + cmd_handle_fatal(idata); + return -1; + } + do rc = imap_cmd_step(idata); while (rc == IMAP_CMD_CONTINUE);