diff --git a/Lib/httplib.py b/Lib/httplib.py
index caf6ccd..9527e29 100644
--- a/Lib/httplib.py
+++ b/Lib/httplib.py
@@ -208,10 +208,11 @@
 
     # See RFC 2616 sec 19.6 and RFC 1945 sec 6 for details.
 
-    def __init__(self, sock, debuglevel=0, strict=0):
+    def __init__(self, sock, debuglevel=0, strict=0, method=None):
         self.fp = sock.makefile('rb', 0)
         self.debuglevel = debuglevel
         self.strict = strict
+        self._method = method
 
         self.msg = None
 
@@ -326,7 +327,8 @@
         # does the body have a fixed length? (of zero)
         if (status == 204 or            # No Content
             status == 304 or            # Not Modified
-            100 <= status < 200):       # 1xx codes
+            100 <= status < 200 or      # 1xx codes
+            self._method == 'HEAD'):
             self.length = 0
 
         # if the connection remains open, and we aren't using chunked, and
@@ -497,6 +499,7 @@
         self._buffer = []
         self.__response = None
         self.__state = _CS_IDLE
+        self._method = None
 
         self._set_hostport(host, port)
         if strict is not None:
@@ -626,6 +629,8 @@
         else:
             raise CannotSendRequest()
 
+        # Save the method we use, we need it later in the response phase
+        self._method = method
         if not url:
             url = '/'
         str = '%s %s %s' % (method, url, self._http_vsn_str)
@@ -763,9 +768,11 @@
 
         if self.debuglevel > 0:
             response = self.response_class(self.sock, self.debuglevel,
-                                           strict=self.strict)
+                                           strict=self.strict, 
+                                           method=self._method)
         else:
-            response = self.response_class(self.sock, strict=self.strict)
+            response = self.response_class(self.sock, strict=self.strict,
+                                           method=self._method)
 
         response.begin()
         assert response.will_close != _UNKNOWN
diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py
index 8764455..29f4503 100644
--- a/Lib/test/test_httplib.py
+++ b/Lib/test/test_httplib.py
@@ -78,4 +78,17 @@
     if cookies != hdr:
         raise AssertionError, "multiple headers not combined properly"
 
+    # test that the library doesn't attempt to read any data
+    # from a head request
+    conn = httplib.HTTPConnection("www.python.org")
+    conn.connect()
+    conn.request("HEAD", "/", headers={"Connection" : "keep-alive"})
+    resp = conn.getresponse()
+    if resp.status != 200:
+        raise AssertionError, "Expected status 200, got %d" % resp.status
+    if resp.read() != "":
+        raise AssertionError, "Did not expect response from HEAD request"
+    resp.close()
+    conn.close()
+
 test()
