wireprotov2: don't emit empty frames
authorGregory Szorc <gregory.szorc@gmail.com>
Fri, 05 Oct 2018 23:49:18 +0000
changeset 40136 3a6d6c54bd81
parent 40135 966b5f7fd30b
child 40137 ed4ebbb98ca0
wireprotov2: don't emit empty frames Staring at logs revealed the presence of empty frames that should have contained payload. Let's stop that from happening. Differential Revision: https://phab.mercurial-scm.org/D4925
mercurial/wireprotoframing.py
tests/test-wireproto-serverreactor.py
--- a/mercurial/wireprotoframing.py	Fri Oct 05 10:29:36 2018 -0700
+++ b/mercurial/wireprotoframing.py	Fri Oct 05 23:49:18 2018 +0000
@@ -531,6 +531,9 @@
         # * If a chunk causes us to go over our buffering limit, we flush
         #   and then buffer the new chunk.
 
+        if not data:
+            return
+
         if len(data) > self._maxsize:
             for frame in self._flush():
                 yield frame
@@ -573,6 +576,9 @@
         self._chunks[:] = []
         self._chunkssize = 0
 
+        if not payload:
+            return
+
         yield self._stream.makeframe(
             self._requestid,
             typeid=FRAME_TYPE_COMMAND_RESPONSE,
--- a/tests/test-wireproto-serverreactor.py	Fri Oct 05 10:29:36 2018 -0700
+++ b/tests/test-wireproto-serverreactor.py	Fri Oct 05 23:49:18 2018 +0000
@@ -394,7 +394,6 @@
             b'1 2 0 command-response continuation Y\x80d',
             b'1 2 0 command-response continuation %s' % first,
             b'1 2 0 command-response continuation %s' % second,
-            b'1 2 0 command-response continuation ',
             b'1 2 0 command-response eos '
         ])