summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Heller <theller@ctypes.org>2002-09-24 17:30:31 (GMT)
committerThomas Heller <theller@ctypes.org>2002-09-24 17:30:31 (GMT)
commitd8ce87ad84d748fb648b874d7dd9d9a3a835ec3d (patch)
tree0201eb5db19f246c1fcd458031d4b99a56a24103
parent7bdabe67a362598dcd6212e9d1c875c80a4d1332 (diff)
downloadcpython-d8ce87ad84d748fb648b874d7dd9d9a3a835ec3d.zip
cpython-d8ce87ad84d748fb648b874d7dd9d9a3a835ec3d.tar.gz
cpython-d8ce87ad84d748fb648b874d7dd9d9a3a835ec3d.tar.bz2
On Windows, select() does not accept empty lists.
Patch suggested by Guido, fixes SF item 611464. Bugfix candidate, will backport to release22-maint myself.
-rw-r--r--Lib/asyncore.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/Lib/asyncore.py b/Lib/asyncore.py
index 5ab6225..abbbae6 100644
--- a/Lib/asyncore.py
+++ b/Lib/asyncore.py
@@ -50,6 +50,7 @@ import exceptions
import select
import socket
import sys
+import time
import os
from errno import EALREADY, EINPROGRESS, EWOULDBLOCK, ECONNRESET, \
@@ -100,11 +101,14 @@ def poll(timeout=0.0, map=None):
r.append(fd)
if obj.writable():
w.append(fd)
- try:
- r, w, e = select.select(r, w, e, timeout)
- except select.error, err:
- if err[0] != EINTR:
- raise
+ if [] == r == w == e:
+ time.sleep(timeout)
+ else:
+ try:
+ r, w, e = select.select(r, w, e, timeout)
+ except select.error, err:
+ if err[0] not in (EINTR, ENOENT):
+ raise
for fd in r:
obj = map.get(fd)