You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by jm...@apache.org on 2005/08/05 02:08:53 UTC

svn commit: r227524 - /spamassassin/trunk/spamc/libspamc.c

Author: jm
Date: Thu Aug  4 17:08:52 2005
New Revision: 227524

URL: http://svn.apache.org/viewcvs?rev=227524&view=rev
Log:
backport bug 4344: enhance spamc under win32 to same timeout behaviour as under UNIX

Modified:
    spamassassin/trunk/spamc/libspamc.c

Modified: spamassassin/trunk/spamc/libspamc.c
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/spamc/libspamc.c?rev=227524&r1=227523&r2=227524&view=diff
==============================================================================
--- spamassassin/trunk/spamc/libspamc.c (original)
+++ spamassassin/trunk/spamc/libspamc.c Thu Aug  4 17:08:52 2005
@@ -173,6 +173,10 @@
     const char *typename;
     int proto = 0;
 
+#ifdef _WIN32
+    int socktout;
+#endif
+
     assert(psock != 0);
 
 	/*----------------------------------------------------------------
@@ -233,6 +237,30 @@
 	}
     }
 
+#ifdef _WIN32
+    /* bug 4344: makes timeout functional on Win32 */
+    socktout = libspamc_timeout * 1000;
+    if (type == PF_INET
+        && setsockopt(*psock, SOL_SOCKET, SO_RCVTIMEO, (char *)&socktout, sizeof(socktout)) != 0)
+    {
+        int origerrno;
+
+        origerrno = WSAGetLastError();
+        switch (origerrno)
+        {
+        case EBADF:
+        case ENOTSOCK:
+        case ENOPROTOOPT:
+        case EFAULT:
+            libspamc_log(flags, LOG_ERR, "setsockopt(SO_RCVTIMEO) failed: %d", origerrno);
+            closesocket(*psock);
+            return EX_SOFTWARE;
+
+        default:
+            break;		/* ignored */
+        }
+    }
+#endif
 
 	/*----------------------------------------------------------------
 	 * Do a bit of setup on the TCP socket if required. Notes above