Hi, 

I have a fix for non-blocking apr_connect() on Windows.
Though sock->timeout is millisecond, it is treated as microsecond.
Please see the attached patch.

The credit goes to TANAKA Koichi <[EMAIL PROTECTED]>, who found and fixed it.
Thanks.

- INOUE Seiichiro <[EMAIL PROTECTED]>
  http://www.ariel-networks.com
Index: network_io/win32/sockets.c
===================================================================
RCS file: /home/cvspublic/apr/network_io/win32/sockets.c,v
retrieving revision 1.80
diff -u -r1.80 sockets.c
--- network_io/win32/sockets.c  5 Jul 2002 17:58:10 -0000       1.80
+++ network_io/win32/sockets.c  10 Jul 2002 09:25:13 -0000
@@ -60,6 +60,9 @@
 #include <string.h>
 #include "inherit.h"
 
+/** number of milliseconds per second */
+#define APR_MSEC_PER_SEC APR_TIME_C(1000)
+
 static char generic_inaddr_any[16] = {0}; /* big enough for IPv4 or IPv6 */
 
 static apr_status_t socket_cleanup(void *sock)
@@ -315,8 +318,8 @@
             tvptr = NULL;
         }
         else {
-            tv.tv_sec =  (long)(sock->timeout / APR_USEC_PER_SEC);
-            tv.tv_usec = (long)(sock->timeout % APR_USEC_PER_SEC);
+            tv.tv_sec =  (long)(sock->timeout / APR_MSEC_PER_SEC);
+            tv.tv_usec = (long)(sock->timeout % APR_MSEC_PER_SEC);
             tvptr = &tv;
         }
         rc = select(FD_SETSIZE+1, NULL, &wfdset, &efdset, tvptr);

Reply via email to