mercurial/keepalive.py
changeset 40033 5e5b06087ec5
parent 40032 dc82ad1b7f77
child 40043 6509fcec830c
--- a/mercurial/keepalive.py	Mon Oct 01 12:02:54 2018 -0700
+++ b/mercurial/keepalive.py	Mon Oct 01 12:30:32 2018 -0700
@@ -392,6 +392,7 @@
                                       method=method, **extrakw)
         self.fileno = sock.fileno
         self.code = None
+        self.receivedbytescount = 0
         self._rbuf = ''
         self._rbufsize = 8096
         self._handler = None # inserted by the handler later
@@ -436,7 +437,16 @@
         # if it's not empty.
         s = self._rbuf
         self._rbuf = ''
-        s += self._raw_read(amt)
+        data = self._raw_read(amt)
+
+        self.receivedbytescount += len(data)
+        self._connection.receivedbytescount += len(data)
+        try:
+            self._handler.parent.receivedbytescount += len(data)
+        except AttributeError:
+            pass
+
+        s += data
         return s
 
     # stolen from Python SVN #68532 to fix issue1088
@@ -512,6 +522,13 @@
             if not new:
                 break
 
+            self.receivedbytescount += len(new)
+            self._connection.receivedbytescount += len(new)
+            try:
+                self._handler.parent.receivedbytescount += len(new)
+            except AttributeError:
+                pass
+
             chunks.append(new)
             i = new.find('\n')
             if i >= 0:
@@ -557,6 +574,14 @@
             return total
         mv = memoryview(dest)
         got = self._raw_readinto(mv[have:total])
+
+        self.receivedbytescount += got
+        self._connection.receivedbytescount += got
+        try:
+            self._handler.receivedbytescount += got
+        except AttributeError:
+            pass
+
         dest[0:have] = self._rbuf
         got += len(self._rbuf)
         self._rbuf = ''
@@ -643,6 +668,7 @@
     def __init__(self, *args, **kwargs):
         httplib.HTTPConnection.__init__(self, *args, **kwargs)
         self.sentbytescount = 0
+        self.receivedbytescount = 0
 
 #########################################################################
 #####   TEST FUNCTIONS