mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
#3566: Clean up handling of remote server disconnects.
This changeset does two things: introduces a new RemoteDisconnected exception (that subclasses ConnectionResetError and BadStatusLine) so that a remote server disconnection can be detected by client code (and provides a better error message for debugging purposes), and ensures that the client socket is closed if a ConnectionError happens, so that the automatic re-connection code can work if the application handles the error and continues on. Tests are added that confirm that a connection is re-used or not re-used as appropriate to the various combinations of protocol version and headers. Patch by Martin Panter, reviewed by Demian Brecht. (Tweaked only slightly by me.)
This commit is contained in:
parent
142bf565b4
commit
cae7bdb424
4 changed files with 131 additions and 10 deletions
|
@ -1128,7 +1128,7 @@ class Transport:
|
|||
if i or e.errno not in (errno.ECONNRESET, errno.ECONNABORTED,
|
||||
errno.EPIPE):
|
||||
raise
|
||||
except http.client.BadStatusLine: #close after we sent request
|
||||
except http.client.RemoteDisconnected:
|
||||
if i:
|
||||
raise
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue