diff --git a/libcloud/common/base.py b/libcloud/common/base.py
index 9c8ea3f..560c5b3 100644
--- a/libcloud/common/base.py
+++ b/libcloud/common/base.py
@@ -44,6 +44,20 @@ from libcloud.httplib_ssl import LibcloudHTTPSConnection
 LibcloudHTTPConnection = httplib.HTTPConnection
 
 
+class HTTPResponse(httplib.HTTPResponse):
+    # On python 2.6 some calls can hang because HEAD isn't quite properly supported
+    # In particular this happens on S3 when calls are made to get_object to
+    # objects that don't exist
+    # This applies the behaviour from 2.7, fixing the hangs.
+    def read(self, amt=None):
+    if self.fp is None:
+        return ''
+    if self._method == 'HEAD':
+        self.close()
+        return ''
+    return httplib.HTTPResponse.read(self, amt)
+
+
 class Response(object):
     """
     A Base Response class to derive from.
@@ -267,7 +281,7 @@ class LoggingConnection():
             ht += "\r\n0\r\n"
         else:
             ht += u(body)
-        rr = httplib.HTTPResponse(sock=fakesock(ht),
+        rr = HTTPResponse(sock=fakesock(ht),
                                   method=r._method,
                                   debuglevel=r.debuglevel)
         rr.begin()
diff --git a/libcloud/storage/drivers/s3.py b/libcloud/storage/drivers/s3.py
index fd57ae7..e26e16f 100644
--- a/libcloud/storage/drivers/s3.py
+++ b/libcloud/storage/drivers/s3.py
@@ -221,9 +221,6 @@ class S3StorageDriver(StorageDriver):
         return container
 
     def get_object(self, container_name, object_name):
-        # TODO: Figure out what is going on when the object or container
-        # does not exist- it seems that Amazon just keeps the connection open
-        # and doesn't return a response.
         container = self.get_container(container_name=container_name)
         response = self.connection.request('/%s/%s' % (container_name,
                                                        object_name),
