Skip to content
This repository was archived by the owner on Nov 23, 2017. It is now read-only.

Commit d427e73

Browse files
committed
Sync selectors.py with CPython
1 parent d6dcf25 commit d427e73

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

asyncio/selectors.py

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,11 @@ def register(self, fileobj, events, data=None):
408408
epoll_events |= select.EPOLLIN
409409
if events & EVENT_WRITE:
410410
epoll_events |= select.EPOLLOUT
411-
self._epoll.register(key.fd, epoll_events)
411+
try:
412+
self._epoll.register(key.fd, epoll_events)
413+
except BaseException:
414+
super().unregister(fileobj)
415+
raise
412416
return key
413417

414418
def unregister(self, fileobj):
@@ -530,14 +534,18 @@ def fileno(self):
530534

531535
def register(self, fileobj, events, data=None):
532536
key = super().register(fileobj, events, data)
533-
if events & EVENT_READ:
534-
kev = select.kevent(key.fd, select.KQ_FILTER_READ,
535-
select.KQ_EV_ADD)
536-
self._kqueue.control([kev], 0, 0)
537-
if events & EVENT_WRITE:
538-
kev = select.kevent(key.fd, select.KQ_FILTER_WRITE,
539-
select.KQ_EV_ADD)
540-
self._kqueue.control([kev], 0, 0)
537+
try:
538+
if events & EVENT_READ:
539+
kev = select.kevent(key.fd, select.KQ_FILTER_READ,
540+
select.KQ_EV_ADD)
541+
self._kqueue.control([kev], 0, 0)
542+
if events & EVENT_WRITE:
543+
kev = select.kevent(key.fd, select.KQ_FILTER_WRITE,
544+
select.KQ_EV_ADD)
545+
self._kqueue.control([kev], 0, 0)
546+
except BaseException:
547+
super().unregister(fileobj)
548+
raise
541549
return key
542550

543551
def unregister(self, fileobj):

0 commit comments

Comments
 (0)