diff --git a/python2/httplib2/__init__.py b/python2/httplib2/__init__.py
index f01e931..2b4848f 100644
--- a/python2/httplib2/__init__.py
+++ b/python2/httplib2/__init__.py
@@ -871,7 +871,12 @@
                 conn.close()
                 raise ServerNotFoundError("Unable to find the server at %s" % conn.host)
             except socket.error, e:
-                if e.errno == errno.ECONNREFUSED: # Connection refused
+                err = 0
+                if hasattr(e, 'args'):
+                    err = getattr(e, 'args')[0]
+                else:
+                    err = e.errno
+                if err == errno.ECONNREFUSED: # Connection refused
                     raise
             except httplib.HTTPException:
                 # Just because the server closed the connection doesn't apparently mean
diff --git a/python2/httplib2test.py b/python2/httplib2test.py
index 5a81a70..50222f2 100755
--- a/python2/httplib2test.py
+++ b/python2/httplib2test.py
@@ -15,15 +15,16 @@
 __version__ = "0.1 ($Rev: 118 $)"
 
 
-import sys
-import unittest
+import StringIO
+import base64
 import httplib
 import httplib2
 import os
-import urlparse
+import socket
+import sys
 import time
-import base64
-import StringIO
+import unittest
+import urlparse
 
 # Python 2.3 support
 if not hasattr(unittest.TestCase, 'assertTrue'):
@@ -166,6 +167,22 @@
         self.assertTrue(content.startswith("Unable to find"))
         self.assertEqual(response.status, 400)
 
+    def testGetConnectionRefused(self):
+        self.http.force_exception_to_status_code = False
+        try:
+          self.http.request("http://localhost:7777/")
+          self.fail("An socket.error exception must be thrown on Connection Refused.")
+        except socket.error:
+            pass
+
+        # Now test with exceptions turned off
+        self.http.force_exception_to_status_code = True
+
+        (response, content) = self.http.request("http://localhost:7777/")
+        self.assertEqual(response['content-type'], 'text/plain')
+        self.assertTrue("Connection refused" in content)
+        self.assertEqual(response.status, 400)
+
     def testGetIRI(self):
         if sys.version_info >= (2,3):
             uri = urlparse.urljoin(base, u"reflector/reflector.cgi?d=\N{CYRILLIC CAPITAL LETTER DJE}")
diff --git a/python3/httplib2/__init__.py b/python3/httplib2/__init__.py
index 5ca8c3a..b25b9c8 100644
--- a/python3/httplib2/__init__.py
+++ b/python3/httplib2/__init__.py
@@ -855,7 +855,19 @@
                 errno_ = (e.args[0].errno if isinstance(e.args[0], socket.error) else e.errno)
                 if errno_ == errno.ECONNREFUSED: # Connection refused
                     raise
-            except httplib.HTTPException:
+            except http.client.HTTPException:
+                if conn.sock is None:
+                    if i == 0:
+                        conn.close()
+                        conn.connect()
+                        continue
+                    else:
+                        conn.close()
+                        raise
+                if i == 0:
+                    conn.close()
+                    conn.connect()
+                    continue
                 # Just because the server closed the connection doesn't apparently mean
                 # that the server didn't send a response.
                 pass
diff --git a/python3/httplib2test.py b/python3/httplib2test.py
index 264677c..de473ac 100755
--- a/python3/httplib2test.py
+++ b/python3/httplib2test.py
@@ -14,16 +14,16 @@
 __history__ = """ """
 __version__ = "0.2 ($Rev: 118 $)"
 
-
-import sys
-import unittest
+import base64
 import http.client
 import httplib2
-import os
-import urllib.parse
-import time
-import base64
 import io
+import os
+import socket
+import sys
+import time
+import unittest
+import urllib.parse
 
 # The test resources base uri
 base = 'http://bitworking.org/projects/httplib2/test/'
@@ -164,6 +164,22 @@
         self.assertTrue(content.startswith(b"Unable to find"))
         self.assertEqual(response.status, 400)
 
+    def testGetConnectionRefused(self):
+        self.http.force_exception_to_status_code = False
+        try:
+            self.http.request("http://localhost:7777/")
+            self.fail("An socket.error exception must be thrown on Connection Refused.")
+        except socket.error:
+            pass
+
+        # Now test with exceptions turned off
+        self.http.force_exception_to_status_code = True
+
+        (response, content) = self.http.request("http://localhost:7777/")
+        self.assertEqual(response['content-type'], 'text/plain')
+        self.assertTrue(b"Connection refused" in content)
+        self.assertEqual(response.status, 400)
+
     def testGetIRI(self):
         if sys.version_info >= (2,3):
             uri = urllib.parse.urljoin(base, "reflector/reflector.cgi?d=\N{CYRILLIC CAPITAL LETTER DJE}")
