@@ -408,7 +408,11 @@ def register(self, fileobj, events, data=None):
408
408
epoll_events |= select .EPOLLIN
409
409
if events & EVENT_WRITE :
410
410
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
412
416
return key
413
417
414
418
def unregister (self , fileobj ):
@@ -530,14 +534,18 @@ def fileno(self):
530
534
531
535
def register (self , fileobj , events , data = None ):
532
536
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
541
549
return key
542
550
543
551
def unregister (self , fileobj ):
0 commit comments