On Windows, select() does not accept empty lists.

Patch suggested by Guido, fixes SF item 611464.

Bugfix candidate, will backport to release22-maint myself.
This commit is contained in:
Thomas Heller 2002-09-24 17:30:31 +00:00
parent 7bdabe67a3
commit d8ce87ad84
1 changed files with 9 additions and 5 deletions

View File

@ -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)