[FIX] actually retry select on EINTR

Turns out select has its own select.error which does *not* subclass
EnvironmentError (or OSError or IOError) and does *not* have a .errno
attribute. So use the correct exception, might just work better than using
a completely different one with no relation.

bzr revid: xmo@openerp.com-20140219155303-sgz7m3gnzr2bmani
This commit is contained in:
Xavier Morel 2014-02-19 16:53:03 +01:00
parent 55a9e5af27
commit fc780d5a81
1 changed files with 6 additions and 2 deletions

View File

@ -197,8 +197,12 @@ class HttpCase(TransactionCase):
# read a byte
try:
ready, _, _ = select.select([phantom.stdout], [], [], 0.5)
except EnvironmentError, e:
if e.errno == errno.EINTR: continue
except select.error, e:
# In Python 2, select.error has no relation to IOError or
# OSError, and no errno/strerror/filename, only a pair of
# unnamed arguments (matching errno and strerror)
err, _ = e.args
if err == errno.EINTR: continue
raise
if ready: