54 lines
1.4 KiB
Diff
54 lines
1.4 KiB
Diff
Index: src/ne_socket.c
|
|
===================================================================
|
|
--- src/ne_socket.c (revision 1791)
|
|
+++ src/ne_socket.c (working copy)
|
|
@@ -1178,10 +1178,11 @@
|
|
{
|
|
int ret;
|
|
|
|
-#ifdef USE_NONBLOCKING_CONNECT
|
|
+#if defined(USE_NONBLOCKING_CONNECT) || defined(WIN32)
|
|
if (sock->cotimeout) {
|
|
int errnum, flags;
|
|
|
|
+#ifdef USE_NONBLOCKING_CONNECT
|
|
/* Get flags and then set O_NONBLOCK. */
|
|
flags = fcntl(fd, F_GETFL);
|
|
if (flags & O_NONBLOCK) {
|
|
@@ -1193,6 +1194,13 @@
|
|
set_strerror(sock, errno);
|
|
return NE_SOCK_ERROR;
|
|
}
|
|
+#else
|
|
+ unsigned long nonblocking = 1;
|
|
+ if (ioctlsocket(fd, FIONBIO, &nonblocking)) {
|
|
+ set_strerror(sock, errnum);
|
|
+ ret = NE_SOCK_ERROR;
|
|
+ }
|
|
+#endif
|
|
|
|
ret = raw_connect(fd, sa, salen);
|
|
if (ret == -1) {
|
|
@@ -1229,12 +1237,19 @@
|
|
ret = NE_SOCK_ERROR;
|
|
}
|
|
}
|
|
-
|
|
+#ifdef USE_NONBLOCKING_CONNECT
|
|
/* Reset to old flags: */
|
|
if (fcntl(fd, F_SETFL, flags) == -1) {
|
|
set_strerror(sock, errno);
|
|
ret = NE_SOCK_ERROR;
|
|
- }
|
|
+ }
|
|
+#else
|
|
+ nonblocking = 0;
|
|
+ if (ioctlsocket(fd, FIONBIO, &nonblocking)) {
|
|
+ set_strerror(sock, errnum);
|
|
+ ret = NE_SOCK_ERROR;
|
|
+ }
|
|
+#endif
|
|
} else
|
|
#endif /* USE_NONBLOCKING_CONNECT */
|
|
{
|