# HG changeset patch # User Augie Fackler # Date 2011-05-11 13:00:48 # Node ID 9adbb5ef096418e8b37cc10b011a9648ea5fd380 # Parent c97d8485b5fa46c94b8afcfab0cde97629ba4086 httpclient: import f4c380237fd5 to fix keepalive not working diff --git a/mercurial/httpclient/__init__.py b/mercurial/httpclient/__init__.py --- a/mercurial/httpclient/__init__.py +++ b/mercurial/httpclient/__init__.py @@ -629,9 +629,11 @@ class HTTPConnection(object): r = self._current_response while r.headers is None: r._select() - if r.complete() or r.will_close: + if r.will_close: self.sock = None self._current_response = None + elif r.complete(): + self._current_response = None else: self._current_response_taken = True return r diff --git a/mercurial/httpclient/tests/simple_http_test.py b/mercurial/httpclient/tests/simple_http_test.py --- a/mercurial/httpclient/tests/simple_http_test.py +++ b/mercurial/httpclient/tests/simple_http_test.py @@ -116,6 +116,9 @@ dotencode self.assertEqual('1234567890', resp.read()) self.assertEqual(['Value\n Rest of value'], resp.headers.getheaders('multiline')) + # Socket should not be closed + self.assertEqual(resp.sock.closed, False) + self.assertEqual(con.sock.closed, False) def testSimpleRequest(self): con = http.HTTPConnection('1.2.3.4:80')