You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by wr...@apache.org on 2009/03/05 21:00:05 UTC
svn commit: r750569 - /httpd/httpd/trunk/server/mpm/winnt/child.c
Author: wrowe
Date: Thu Mar 5 20:00:03 2009
New Revision: 750569
URL: http://svn.apache.org/viewvc?rev=750569&view=rev
Log:
Until APR is actually fixed between apr_os_sock_make and the logic
within apr_socket_timeout_set, let's presume that vendor differences
of socket stack drivers can vary this behavior, and the assumptions
were unsafe for both accept() and AcceptEx().
Modified:
httpd/httpd/trunk/server/mpm/winnt/child.c
Modified: httpd/httpd/trunk/server/mpm/winnt/child.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/winnt/child.c?rev=750569&r1=750568&r2=750569&view=diff
==============================================================================
--- httpd/httpd/trunk/server/mpm/winnt/child.c (original)
+++ httpd/httpd/trunk/server/mpm/winnt/child.c Thu Mar 5 20:00:03 2009
@@ -615,11 +615,6 @@
* os_sock_make and os_sock_put that it does not query).
*/
WSAEventSelect(context->accept_socket, 0, 0);
- ioctlsocket(context->accept_socket, FIONBIO, &zero);
- setsockopt(context->accept_socket, SOL_SOCKET, SO_RCVTIMEO,
- (char *) &zero, sizeof(zero));
- setsockopt(context->accept_socket, SOL_SOCKET, SO_SNDTIMEO,
- (char *) &zero, sizeof(zero));
context->overlapped.Pointer = NULL;
err_count = 0;
}
@@ -629,6 +624,16 @@
sockinfo.remote = context->sa_client;
sockinfo.family = context->sa_server->sa_family;
sockinfo.type = SOCK_STREAM;
+ /* Restore the state corresponding to apr_os_sock_make's default
+ * assumption of timeout -1 (really, a flaw of os_sock_make and
+ * os_sock_put that it does not query to determine ->timeout).
+ * XXX: Upon a fix to APR, these three statements should disappear.
+ */
+ ioctlsocket(context->accept_socket, FIONBIO, &zero);
+ setsockopt(context->accept_socket, SOL_SOCKET, SO_RCVTIMEO,
+ (char *) &zero, sizeof(zero));
+ setsockopt(context->accept_socket, SOL_SOCKET, SO_SNDTIMEO,
+ (char *) &zero, sizeof(zero));
apr_os_sock_make(&context->sock, &sockinfo, context->ptrans);
/* When a connection is received, send an io completion notification