#30624 / selectors: use bare except clause in order to not leave the fd in a bad state in case of error (#2082)

This commit is contained in:
Giampaolo Rodola 2017-06-11 01:51:52 +02:00 committed by Guido van Rossum
parent 6b6e687766
commit 05dc20f992
2 changed files with 6 additions and 2 deletions

View File

@ -387,7 +387,7 @@ class _PollLikeSelector(_BaseSelectorImpl):
selector_events |= self._EVENT_WRITE
try:
self._selector.modify(key.fd, selector_events)
except Exception:
except:
super().unregister(fileobj)
raise
changed = True
@ -524,7 +524,7 @@ if hasattr(select, 'kqueue'):
kev = select.kevent(key.fd, select.KQ_FILTER_WRITE,
select.KQ_EV_ADD)
self._selector.control([kev], 0, 0)
except Exception:
except:
super().unregister(fileobj)
raise
return key

View File

@ -350,6 +350,10 @@ Extension Modules
Library
-------
- bpo-30624: selectors does not take KeyboardInterrupt and SystemExit into
account, leaving a fd in a bad state in case of error. Patch by Giampaolo
Rodola'.
- bpo-30595: multiprocessing.Queue.get() with a timeout now polls its reader in
non-blocking mode if it succeeded to aquire the lock but the acquire took
longer than the timeout.