[Mimedefang] I think I found the problem with mimedefang looping forever...

David F. Skoll dfs at roaringpenguin.com
Fri Mar 1 21:06:08 EST 2002


... and it's a bug in libmilter.

The following patch, applied in sendmail-8.12.2/libmilter, should
correct it.

--- comm.c.old	Wed Nov  7 12:43:04 2001
+++ comm.c	Fri Mar  1 21:02:55 2002
@@ -241,12 +241,13 @@

 	/* use writev() instead to send the whole stuff at once? */
 	while ((l = MI_SOCK_WRITE(sd, (void *) (data + i),
-				  sl - i)) < (ssize_t) sl)
+				  sl)) < (ssize_t) sl)
 	{
 		if (l < 0)
 			return MI_FAILURE;
 		i += l;
 		sl -= l;
+		if (!sl) break;
 	}

 	if (len > 0 && buf == NULL)
@@ -265,12 +266,13 @@
 	if (ret < 0)
 		return MI_FAILURE;
 	while ((l = MI_SOCK_WRITE(sd, (void *) (buf + i),
-				  sl - i)) < (ssize_t) sl)
+				  sl)) < (ssize_t) sl)
 	{
 		if (l < 0)
 			return MI_FAILURE;
 		i += l;
 		sl -= l;
+		if (!sl) break;
 	}
 	return MI_SUCCESS;
 }


--
David.





More information about the MIMEDefang mailing list