MBOX-Line: From tss at iki.fi  Mon Oct  4 17:51:16 2010
To: imap-protocol@u.washington.edu
From: Timo Sirainen <tss@iki.fi>
Date: Fri Jun  8 12:34:45 2018
Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email")
	Deficiency, Explanation?
In-Reply-To: <alpine.OSX.2.00.1010041405460.392@hsinghsing.panda.com>
References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com>
	<4CAA0F5C.7030009@lists.grepular.com>
	<alpine.OSX.2.00.1010041034520.392@hsinghsing.panda.com>
	<7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com>
	<11166.1286223088.054596@puncture>
	<alpine.OSX.2.00.1010041338040.392@hsinghsing.panda.com>
	<11166.1286226226.318772@puncture>
	<alpine.OSX.2.00.1010041405460.392@hsinghsing.panda.com>
Message-ID: <959754EE-4A2A-4DBD-8A63-6A317532C302@iki.fi>

On 4.10.2010, at 22.20, Mark Crispin wrote:

> Last, and not least, it would not issue the
> DONE after 29 minutes as described in the IDLE RFC, so even if the session
> was still alive it would die in the 30th minute.

If only it were the only one. It seems that just about all the widely used clients either do that or used to do it at some point. So nowadays my server never disconnects clients on IDLE because they haven't sent anything. That fixes the whole thing. I still send "* OK Still here" events every 2 minutes, so connections that are actually gone will get disconnected pretty quickly.

> That last problem required a truly horrible and utterly disgusting kludge.
> At the 28th minute, a fake untagged EXISTS would be sent announcing new
> mail.  The Client That Shall Not Be Named would issue a DONE.  Then, at
> once, the server would issue an untagged EXPUNGE for that fake message,
> and The Client That Shall Not Be Named never noticed that nothing changed
> in the UID regime as a result of that message being "added" then
> "expunged"!

This doesn't help clients that use one IDLEing connection that does nothing but IDLE, and use another connection for actually fetching the new mails. Although maybe that thing died already that had the problem, but I'm not entirely sure. Anyway, my above solution seems easiest for current and future clients..
