@@ -399,7 +399,11 @@ def register(self, fileobj, events, data=None):
399399 epoll_events |= select .EPOLLIN
400400 if events & EVENT_WRITE :
401401 epoll_events |= select .EPOLLOUT
402- self ._epoll .register (key .fd , epoll_events )
402+ try :
403+ self ._epoll .register (key .fd , epoll_events )
404+ except BaseException :
405+ super ().unregister (fileobj )
406+ raise
403407 return key
404408
405409 def unregister (self , fileobj ):
@@ -465,14 +469,18 @@ def fileno(self):
465469
466470 def register (self , fileobj , events , data = None ):
467471 key = super ().register (fileobj , events , data )
468- if events & EVENT_READ :
469- kev = select .kevent (key .fd , select .KQ_FILTER_READ ,
470- select .KQ_EV_ADD )
471- self ._kqueue .control ([kev ], 0 , 0 )
472- if events & EVENT_WRITE :
473- kev = select .kevent (key .fd , select .KQ_FILTER_WRITE ,
474- select .KQ_EV_ADD )
475- self ._kqueue .control ([kev ], 0 , 0 )
472+ try :
473+ if events & EVENT_READ :
474+ kev = select .kevent (key .fd , select .KQ_FILTER_READ ,
475+ select .KQ_EV_ADD )
476+ self ._kqueue .control ([kev ], 0 , 0 )
477+ if events & EVENT_WRITE :
478+ kev = select .kevent (key .fd , select .KQ_FILTER_WRITE ,
479+ select .KQ_EV_ADD )
480+ self ._kqueue .control ([kev ], 0 , 0 )
481+ except BaseException :
482+ super ().unregister (fileobj )
483+ raise
476484 return key
477485
478486 def unregister (self , fileobj ):
0 commit comments