roudkerk added the comment:
>From Guido's patch:
> if (!DuplicateHandle(GetCurrentProcess(), (HANDLE)handle,
> GetCurrentProcess(), &newhandle,
> 0, FALSE, DUPLICATE_SAME_ACCESS))
> {
> WSASetLastError(GetLastError());
> return INVALID_SOCKET;
> }
If you are going to use GetLastError() like that then you really
should change set_error() so that it recognizes non-WSA errors.
The solution is easy: rip out the 80+ lines of Windows specific code
in set_error() and replace them by the much simpler
#ifdef MS_WINDOWS
int err_no = WSAGetLastError();
/* PyErr_SetExcFromWindowsErr() invokes FormatMessage() which
recognizes the error numbers used by both GetLastError()
and WSAGetLastError() */
if (err_no)
return PyErr_SetExcFromWindowsErr(socket_error, err_no);
#endif
Note that if you make makefile() use a duplicate socket then you can
also remove all the reference counting stuff from the socket subclass.
__________________________________
Tracker <[EMAIL PROTECTED]>
<http://bugs.python.org/issue1378>
__________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com