Mercurial > hg
changeset 41441:44d752efdbce
keepalive: implement _close_conn() so closes are known
Keepalives were not working on Python 3 because
http.client.HTTPResponse was refactored to call _close_conn()
instead of close(). Our custom close() is what returns inactive
connections to the available state.
We better support Python 3 by implementing a _close_conn().
Differential Revision: https://phab.mercurial-scm.org/D5720
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 26 Jan 2019 13:52:39 -0800 |
parents | 1bc01490178a |
children | e7fcbeb95249 |
files | mercurial/keepalive.py |
diffstat | 1 files changed, 8 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/keepalive.py Mon Jan 28 21:35:06 2019 -0500 +++ b/mercurial/keepalive.py Sat Jan 26 13:52:39 2019 -0800 @@ -403,6 +403,11 @@ _raw_read = httplib.HTTPResponse.read _raw_readinto = getattr(httplib.HTTPResponse, 'readinto', None) + # Python 2.7 has a single close() which closes the socket handle. + # This method was effectively renamed to _close_conn() in Python 3. But + # there is also a close(). _close_conn() is called by methods like + # read(). + def close(self): if self.fp: self.fp.close() @@ -411,6 +416,9 @@ self._handler._request_closed(self, self._host, self._connection) + def _close_conn(self): + self.close() + def close_connection(self): self._handler._remove_connection(self._host, self._connection, close=1) self.close()