Ilja Booij wrote:
I wonder how this happens. I haven't been able to reproduce this. Paul
(J Stevens), you've done some stuff in IMAP wrt a similar problem, do
you have any clue? The client in this case is Postfix/lmtp
Ilja,
Basically, dbmail kept writing to ci->tx even though the client had started closing the socket. This in turn
triggered a RSET in the client which was pretty much ignored by dbmail. Perhaps something has triggered the
postfix end to close, but the dbmail-lmtpd doesn't detect the state of the socket properly.
A quick glance at the lmtp.c code shows that the ci_write wrapper isn't used there, and the state of ci->tx
isn't checked at all before a write. Naughty.
I guess ci_write can safely be moved from imaputils.c to clientinfo.h which is probably the logical place
anyway. After that all write actions on the socket should use this wrapper and return on error.
That fixed all socket problems in the imap code anyway.
I'm not familiar with lmtp (yet), and haven't got the time to dive in now. Hope
this helps though.
--
________________________________________________________________
Paul Stevens mailto:[EMAIL PROTECTED]
NET FACILITIES GROUP PGP: finger [EMAIL PROTECTED]
The Netherlands________________________________http://www.nfg.nl