37 lines
1.4 KiB
Diff
37 lines
1.4 KiB
Diff
Now I have all the information I need. The fix needs to:
|
|
|
|
1. Import `socket` at the top of the file
|
|
2. Add `ConnectionError` to the imports from `.exceptions`
|
|
3. Catch `socket.error` in the `generate()` function and wrap it in `ConnectionError`
|
|
|
|
Here's the patch:
|
|
|
|
--- a/requests/models.py
|
|
+++ b/requests/models.py
|
|
@@ -7,6 +7,7 @@ This module contains the primary objects that power Requests.
|
|
"""
|
|
|
|
import collections
|
|
+import socket
|
|
import datetime
|
|
|
|
from io import BytesIO, UnsupportedOperation
|
|
@@ -21,7 +22,7 @@ from .packages.urllib3.filepost import encode_multipart_formdata
|
|
from .packages.urllib3.util import parse_url
|
|
from .packages.urllib3.exceptions import DecodeError
|
|
from .exceptions import (
|
|
- HTTPError, RequestException, MissingSchema, InvalidURL,
|
|
+ HTTPError, ConnectionError, RequestException, MissingSchema, InvalidURL,
|
|
ChunkedEncodingError, ContentDecodingError)
|
|
from .utils import (
|
|
guess_filename, get_auth_from_url, requote_uri,
|
|
@@ -630,6 +631,8 @@ class Response(object):
|
|
except IncompleteRead as e:
|
|
raise ChunkedEncodingError(e)
|
|
except DecodeError as e:
|
|
raise ContentDecodingError(e)
|
|
+ except socket.error as e:
|
|
+ raise ConnectionError(e)
|
|
except AttributeError:
|
|
# Standard file-like object.
|
|
while True:
|