@@ -208,12 +208,14 @@ async def _accept_connection2(
208208
209209 try :
210210 await waiter
211- except :
211+ except BaseException :
212212 transport .close ()
213213 raise
214+ # It's now up to the protocol to handle the connection.
214215
215- # It's now up to the protocol to handle the connection.
216- except Exception as exc :
216+ except (SystemExit , KeyboardInterrupt ):
217+ raise
218+ except BaseException as exc :
217219 if self ._debug :
218220 context = {
219221 'message' :
@@ -370,7 +372,9 @@ def _sock_recv(self, fut, sock, n):
370372 data = sock .recv (n )
371373 except (BlockingIOError , InterruptedError ):
372374 return # try again next time
373- except Exception as exc :
375+ except (SystemExit , KeyboardInterrupt ):
376+ raise
377+ except BaseException as exc :
374378 fut .set_exception (exc )
375379 else :
376380 fut .set_result (data )
@@ -404,7 +408,9 @@ def _sock_recv_into(self, fut, sock, buf):
404408 nbytes = sock .recv_into (buf )
405409 except (BlockingIOError , InterruptedError ):
406410 return # try again next time
407- except Exception as exc :
411+ except (SystemExit , KeyboardInterrupt ):
412+ raise
413+ except BaseException as exc :
408414 fut .set_exception (exc )
409415 else :
410416 fut .set_result (nbytes )
@@ -447,7 +453,9 @@ def _sock_sendall(self, fut, sock, view, pos):
447453 n = sock .send (view [start :])
448454 except (BlockingIOError , InterruptedError ):
449455 return
450- except Exception as exc :
456+ except (SystemExit , KeyboardInterrupt ):
457+ raise
458+ except BaseException as exc :
451459 fut .set_exception (exc )
452460 return
453461
@@ -487,7 +495,9 @@ def _sock_connect(self, fut, sock, address):
487495 fut .add_done_callback (
488496 functools .partial (self ._sock_write_done , fd ))
489497 self .add_writer (fd , self ._sock_connect_cb , fut , sock , address )
490- except Exception as exc :
498+ except (SystemExit , KeyboardInterrupt ):
499+ raise
500+ except BaseException as exc :
491501 fut .set_exception (exc )
492502 else :
493503 fut .set_result (None )
@@ -507,7 +517,9 @@ def _sock_connect_cb(self, fut, sock, address):
507517 except (BlockingIOError , InterruptedError ):
508518 # socket is still registered, the callback will be retried later
509519 pass
510- except Exception as exc :
520+ except (SystemExit , KeyboardInterrupt ):
521+ raise
522+ except BaseException as exc :
511523 fut .set_exception (exc )
512524 else :
513525 fut .set_result (None )
@@ -537,7 +549,9 @@ def _sock_accept(self, fut, registered, sock):
537549 conn .setblocking (False )
538550 except (BlockingIOError , InterruptedError ):
539551 self .add_reader (fd , self ._sock_accept , fut , True , sock )
540- except Exception as exc :
552+ except (SystemExit , KeyboardInterrupt ):
553+ raise
554+ except BaseException as exc :
541555 fut .set_exception (exc )
542556 else :
543557 fut .set_result ((conn , address ))
@@ -785,7 +799,9 @@ def _read_ready__get_buffer(self):
785799 buf = self ._protocol .get_buffer (- 1 )
786800 if not len (buf ):
787801 raise RuntimeError ('get_buffer() returned an empty buffer' )
788- except Exception as exc :
802+ except (SystemExit , KeyboardInterrupt ):
803+ raise
804+ except BaseException as exc :
789805 self ._fatal_error (
790806 exc , 'Fatal error: protocol.get_buffer() call failed.' )
791807 return
@@ -794,7 +810,9 @@ def _read_ready__get_buffer(self):
794810 nbytes = self ._sock .recv_into (buf )
795811 except (BlockingIOError , InterruptedError ):
796812 return
797- except Exception as exc :
813+ except (SystemExit , KeyboardInterrupt ):
814+ raise
815+ except BaseException as exc :
798816 self ._fatal_error (exc , 'Fatal read error on socket transport' )
799817 return
800818
@@ -804,7 +822,9 @@ def _read_ready__get_buffer(self):
804822
805823 try :
806824 self ._protocol .buffer_updated (nbytes )
807- except Exception as exc :
825+ except (SystemExit , KeyboardInterrupt ):
826+ raise
827+ except BaseException as exc :
808828 self ._fatal_error (
809829 exc , 'Fatal error: protocol.buffer_updated() call failed.' )
810830
@@ -815,7 +835,9 @@ def _read_ready__data_received(self):
815835 data = self ._sock .recv (self .max_size )
816836 except (BlockingIOError , InterruptedError ):
817837 return
818- except Exception as exc :
838+ except (SystemExit , KeyboardInterrupt ):
839+ raise
840+ except BaseException as exc :
819841 self ._fatal_error (exc , 'Fatal read error on socket transport' )
820842 return
821843
@@ -825,7 +847,9 @@ def _read_ready__data_received(self):
825847
826848 try :
827849 self ._protocol .data_received (data )
828- except Exception as exc :
850+ except (SystemExit , KeyboardInterrupt ):
851+ raise
852+ except BaseException as exc :
829853 self ._fatal_error (
830854 exc , 'Fatal error: protocol.data_received() call failed.' )
831855
@@ -835,7 +859,9 @@ def _read_ready__on_eof(self):
835859
836860 try :
837861 keep_open = self ._protocol .eof_received ()
838- except Exception as exc :
862+ except (SystemExit , KeyboardInterrupt ):
863+ raise
864+ except BaseException as exc :
839865 self ._fatal_error (
840866 exc , 'Fatal error: protocol.eof_received() call failed.' )
841867 return
@@ -871,7 +897,9 @@ def write(self, data):
871897 n = self ._sock .send (data )
872898 except (BlockingIOError , InterruptedError ):
873899 pass
874- except Exception as exc :
900+ except (SystemExit , KeyboardInterrupt ):
901+ raise
902+ except BaseException as exc :
875903 self ._fatal_error (exc , 'Fatal write error on socket transport' )
876904 return
877905 else :
@@ -894,7 +922,9 @@ def _write_ready(self):
894922 n = self ._sock .send (self ._buffer )
895923 except (BlockingIOError , InterruptedError ):
896924 pass
897- except Exception as exc :
925+ except (SystemExit , KeyboardInterrupt ):
926+ raise
927+ except BaseException as exc :
898928 self ._loop ._remove_writer (self ._sock_fd )
899929 self ._buffer .clear ()
900930 self ._fatal_error (exc , 'Fatal write error on socket transport' )
@@ -970,7 +1000,9 @@ def _read_ready(self):
9701000 pass
9711001 except OSError as exc :
9721002 self ._protocol .error_received (exc )
973- except Exception as exc :
1003+ except (SystemExit , KeyboardInterrupt ):
1004+ raise
1005+ except BaseException as exc :
9741006 self ._fatal_error (exc , 'Fatal read error on datagram transport' )
9751007 else :
9761008 self ._protocol .datagram_received (data , addr )
@@ -1007,7 +1039,9 @@ def sendto(self, data, addr=None):
10071039 except OSError as exc :
10081040 self ._protocol .error_received (exc )
10091041 return
1010- except Exception as exc :
1042+ except (SystemExit , KeyboardInterrupt ):
1043+ raise
1044+ except BaseException as exc :
10111045 self ._fatal_error (
10121046 exc , 'Fatal write error on datagram transport' )
10131047 return
@@ -1030,7 +1064,9 @@ def _sendto_ready(self):
10301064 except OSError as exc :
10311065 self ._protocol .error_received (exc )
10321066 return
1033- except Exception as exc :
1067+ except (SystemExit , KeyboardInterrupt ):
1068+ raise
1069+ except BaseException as exc :
10341070 self ._fatal_error (
10351071 exc , 'Fatal write error on datagram transport' )
10361072 return
0 commit comments