diff Modules/socketmodule.c @ 64393:633166d4fc12 3.1

Merged revisions 84450 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r84450 | daniel.stutzbach | 2010-09-03 07:38:33 -0500 (Fri, 03 Sep 2010) | 1 line Fix Issue9753: socket.dup() does not always work right on Windows ........
author Daniel Stutzbach <daniel@stutzbachenterprises.com>
date Fri, 03 Sep 2010 12:42:06 +0000
parents 2a4ceebdfcfb
children 5a7bb85a5d99
line wrap: on
line diff
--- a/Modules/socketmodule.c	Thu Sep 02 22:21:32 2010 +0000
+++ b/Modules/socketmodule.c	Fri Sep 03 12:42:06 2010 +0000
@@ -351,16 +351,13 @@
 static SOCKET
 dup_socket(SOCKET handle)
 {
-    HANDLE newhandle;
-
-    if (!DuplicateHandle(GetCurrentProcess(), (HANDLE)handle,
-                         GetCurrentProcess(), &newhandle,
-                         0, FALSE, DUPLICATE_SAME_ACCESS))
-    {
-        WSASetLastError(GetLastError());
+    WSAPROTOCOL_INFO info;
+
+    if (WSADuplicateSocket(handle, GetCurrentProcessId(), &info))
         return INVALID_SOCKET;
-    }
-    return (SOCKET)newhandle;
+
+    return WSASocket(FROM_PROTOCOL_INFO, FROM_PROTOCOL_INFO,
+                     FROM_PROTOCOL_INFO, &info, 0, 0);
 }
 #define SOCKETCLOSE closesocket
 #else