diff Modules/socketmodule.c @ 24619:b64db550972c legacy-trunk

internal_connect(): Windows. When sock_timeout > 0 and connect() yields WSAEWOULDBLOCK, the second connect() attempt appears to yield WSAEISCONN on Win98 but WSAEINVAL on Win2K. So accept either as meaning "yawn, fine". This allows test_socket to succeed on my Win2K box (which it already did on my Win98SE box).
author Tim Peters <tim.peters@gmail.com>
date Tue, 06 Aug 2002 22:25:02 +0000
parents f66b3a3509c7
children 980767c6cd97
line wrap: on
line diff
--- a/Modules/socketmodule.c	Tue Aug 06 22:15:23 2002 +0000
+++ b/Modules/socketmodule.c	Tue Aug 06 22:25:02 2002 +0000
@@ -1305,8 +1305,16 @@
 		if (res < 0 && WSAGetLastError() == WSAEWOULDBLOCK) {
 			internal_select(s, 1);
 			res = connect(s->sock_fd, addr, addrlen);
-			if (res < 0 && WSAGetLastError() == WSAEISCONN)
-				res = 0;
+			if (res < 0) {
+				/* On Win98, WSAEISCONN was seen here.  But
+				 * on Win2K, WSAEINVAL.  So accept both as
+				 * meaning "fine".
+				 */
+				int code = WSAGetLastError();
+				if (code == WSAEISCONN ||
+				    code == WSAEINVAL)
+					res = 0;
+			}
 		}
 	}
 
@@ -2495,11 +2503,11 @@
 				return PyErr_Format(PyExc_OverflowError,
 					    "long int larger than 32 bits");
 			x = y;
-		}			
+		}
 #endif
 	}
 	else
-		return PyErr_Format(PyExc_TypeError, 
+		return PyErr_Format(PyExc_TypeError,
 				    "expected int/long, %s found",
 				    arg->ob_type->tp_name);
 	if (x == (unsigned long) -1 && PyErr_Occurred())
@@ -2554,11 +2562,11 @@
 				return PyErr_Format(PyExc_OverflowError,
 					    "long int larger than 32 bits");
 			x = y;
-		}			
+		}
 #endif
 	}
 	else
-		return PyErr_Format(PyExc_TypeError, 
+		return PyErr_Format(PyExc_TypeError,
 				    "expected int/long, %s found",
 				    arg->ob_type->tp_name);
 	return PyInt_FromLong(htonl(x));