Timo Sirainen wrote:
On 9.7.2004, at 00:57, Mark E. Mallett wrote:
On Fri, Jul 09, 2004 at 12:34:04AM +0300, Timo Sirainen wrote:
- Fixed APPEND hanging if the whole message was sent in one TCP packet (ie. fixes the "Sent mail" hangs)
Curious-- how does the application-level code care about TCP packets?
It reads all of it into buffer, then later tries to read more even though everything was already in that buffer so it gets stuck at waiting. Dovecot's istream-limit wrapper stream specifically was a problem. It called parent stream's read() function without checking first if there was already data in it's buffer.
These wrapper streams have been quite difficult in general. mbox support is implemented using one of those too and it took quite a while to get it working correctly. I guess I should write some comments there how exactly they should be implemented.
Is this a problem in 0.99 as well?
Matt
On Fri, 2004-07-09 at 02:07, Matthew Reimer wrote:
- Fixed APPEND hanging if the whole message was sent in one TCP packet (ie. fixes the "Sent mail" hangs) .. It reads all of it into buffer, then later tries to read more even though everything was already in that buffer so it gets stuck at waiting. Dovecot's istream-limit wrapper stream specifically was a problem. It called parent stream's read() function without checking first if there was already data in it's buffer.
Is this a problem in 0.99 as well?
No, I don't think so. 0.99 didn't have wrapper streams, limits (eg. read only up to X bytes) were set to input stream directly, which made wrapper streams very complex to implement.
Wrapper streams make things pretty neat. It's possible to implement for example gzip or bzip2 wrapper streams for mboxes quite easily as a plugin.
participants (2)
-
Matthew Reimer
-
Timo Sirainen