Message170799
There are some differences between win32 and other os socket implementations. One specific I found is that in windows, non-blocking socket apis will return WSAEWOULDBLOCK or 10035 instead of EWOULDBLOCK.
This causes recv() in asyncore.dispatcher to raise an unhandled exception instead of continuing gracefully.
The fix could maybe be as simple as replacing line 384 in asyncore.py:
data = self.socket.recv(buffer_size)
with
try:
data = self.socket.recv(buffer_size)
except socket.error as e:
if 10035 == e.errno:
pass
else:
raise e
The differences between windows and unix non-blocking sockets are summarized quite nice here: http://itamarst.org/writings/win32sockets.html
The original documentation from microsoft can be found here: http://msdn.microsoft.com/en-us/library/windows/desktop/ms740668(v=vs.85).aspx |
|
Date |
User |
Action |
Args |
2012-09-20 11:12:50 | McNetic | set | recipients:
+ McNetic |
2012-09-20 11:12:50 | McNetic | set | messageid: <1348139570.15.0.496741951323.issue15982@psf.upfronthosting.co.za> |
2012-09-20 11:12:49 | McNetic | link | issue15982 messages |
2012-09-20 11:12:49 | McNetic | create | |
|