diff --git a/requests/models.py b/requests/models.py index d8c0f3e8..44bf5818 100644 --- a/requests/models.py +++ b/requests/models.py @@ -8,6 +8,7 @@ This module contains the primary objects that power Requests. """ import os +import socket from datetime import datetime from .hooks import dispatch_hook, HOOKS @@ -608,6 +609,9 @@ class Request(object): ) self.sent = True + except socket.error as sockerr: + raise ConnectionError(sockerr) + except MaxRetryError as e: raise ConnectionError(e) diff --git a/tests/test_requests.py b/tests/test_requests.py index dd08b2af..0a52c4c3 100755 --- a/tests/test_requests.py +++ b/tests/test_requests.py @@ -811,6 +811,20 @@ class RequestsTestSuite(TestSetup, TestBaseMixin, unittest.TestCase): assert ds1.prefetch assert not ds2.prefetch + def test_connection_error(self): + try: + get('http://localhost:1/nope') + except requests.ConnectionError: + pass + else: + assert False + + def test_connection_error_with_safe_mode(self): + config = {'safe_mode': True} + r = get('http://localhost:1/nope', allow_redirects=False, config=config) + assert r.content == None + + # def test_invalid_content(self): # # WARNING: if you're using a terrible DNS provider (comcast), # # this will fail.