D4925: wireprotov2: don't emit empty frames
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Tue Oct 9 00:31:03 UTC 2018
indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
Staring at logs revealed the presence of empty frames that should have
contained payload. Let's stop that from happening.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D4925
AFFECTED FILES
mercurial/wireprotoframing.py
tests/test-wireproto-serverreactor.py
CHANGE DETAILS
diff --git a/tests/test-wireproto-serverreactor.py b/tests/test-wireproto-serverreactor.py
--- a/tests/test-wireproto-serverreactor.py
+++ b/tests/test-wireproto-serverreactor.py
@@ -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 '
])
diff --git a/mercurial/wireprotoframing.py b/mercurial/wireprotoframing.py
--- a/mercurial/wireprotoframing.py
+++ b/mercurial/wireprotoframing.py
@@ -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,
To: indygreg, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list