[fetchmail]loosing messages

Matthias Andree ma@dt.e-technik.uni-dortmund.de
Fri, 03 Dec 2004 01:05:35 +0100


"Reinhard Haller" <reinhard.haller@interactive-net.de> writes:

> I suspect a TCP handling error in fetchmail 6.2.5_2
> on FreeBSD 4.10.
>

[...]

> It starts with the end of the transmission of a large mail (approx 7.5
> M).  At 09:34:33.563671 my system acks the last data packet. The virus
> checker takes a little bit longer on this message and finishes his
> work at 09:36:49 and now comes also the SMTP session to an end.
> Fetchmail is flushing the message (DELE 1), but has ignored the TCP
> end-of-session request for more than a minute, which is a little bit
> to long for the POP server.
>
> After that the POP session ends and all other messages on the pop
> server are marked as "seen". Specifying "fetchall" in fetchmailrc
> leads to a never ending fetch of the big mail.

Does this patch improve the situation?

Index: transact.c
===================================================================
--- transact.c	(Revision 4014)
+++ transact.c	(Arbeitskopie)
@@ -1503,7 +1503,10 @@
     va_end(ap);
 
     snprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), "\r\n");
-    SockWrite(sock, buf, strlen(buf));
+    if (SockWrite(sock, buf, strlen(buf)) < strlen(buf)) {
+	/* short write, bail out */
+	return PS_SOCKET;
+    }
 
     if (outlevel >= O_MONITOR)
     {


-- 
Matthias Andree