Issue #15633: httplib.HTTPResponse is now mark closed when the server sends less than the advertised Content-Length.
diff --git a/Lib/http/client.py b/Lib/http/client.py
index 4d93b93..36528da 100644
--- a/Lib/http/client.py
+++ b/Lib/http/client.py
@@ -493,7 +493,11 @@
             if self.length is None:
                 s = self.fp.read()
             else:
-                s = self._safe_read(self.length)
+                try:
+                    s = self._safe_read(self.length)
+                except IncompleteRead:
+                    self.close()
+                    raise
                 self.length = 0
             self.close()        # we read everything
             return s
@@ -507,6 +511,10 @@
         # connection, and the user is reading more bytes than will be provided
         # (for example, reading in 1k chunks)
         s = self.fp.read(amt)
+        if not s:
+            # Ideally, we would raise IncompleteRead if the content-length
+            # wasn't satisfied, but it might break compatibility.
+            self.close()
         if self.length is not None:
             self.length -= len(s)
             if not self.length: