Mercurial > cpython-lru_cache-weakref
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
