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