changeset 40426:588f1e9a4d16 stable

http: work around custom http client classes that refuse extra attrs I have no idea what is going on with our custom http client code at Google, but it chokes on these extra attributes we're tucking on http clients. Since it feels more than a little wrong to just stuff extra data on a client, let's degrade gracefully when the client class refuses the attributes.
author Augie Fackler <augie@google.com>
date Mon, 29 Oct 2018 16:23:42 -0400
parents 7e4ffe2719e4
children bafa1c4bb7a8
files mercurial/httppeer.py mercurial/keepalive.py
diffstat 2 files changed, 11 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/httppeer.py	Thu Oct 25 21:33:43 2018 +0800
+++ b/mercurial/httppeer.py	Mon Oct 29 16:23:42 2018 -0400
@@ -405,11 +405,15 @@
         return True
 
     def close(self):
+        try:
+            reqs, sent, recv = (self._urlopener.requestscount,
+                                self._urlopener.sentbytescount,
+                                self._urlopener.receivedbytescount)
+        except AttributeError:
+            return
         self.ui.note(_('(sent %d HTTP requests and %d bytes; '
                        'received %d bytes in responses)\n') %
-                     (self._urlopener.requestscount,
-                      self._urlopener.sentbytescount,
-                      self._urlopener.receivedbytescount))
+                     (reqs, sent, recv))
 
     # End of ipeerconnection interface.
 
--- a/mercurial/keepalive.py	Thu Oct 25 21:33:43 2018 +0800
+++ b/mercurial/keepalive.py	Mon Oct 29 16:23:42 2018 -0400
@@ -442,7 +442,10 @@
         data = self._raw_read(amt)
 
         self.receivedbytescount += len(data)
-        self._connection.receivedbytescount += len(data)
+        try:
+            self._connection.receivedbytescount += len(data)
+        except AttributeError:
+            pass
         try:
             self._handler.parent.receivedbytescount += len(data)
         except AttributeError: