Mailing List Archive

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