--- a/mercurial/wireprotoframing.py Wed Mar 28 10:52:40 2018 -0700
+++ b/mercurial/wireprotoframing.py Wed Mar 28 14:55:13 2018 -0700
@@ -349,7 +349,7 @@
if done:
break
-def createbytesresponseframesfrombytes(stream, requestid, data,
+def createbytesresponseframesfrombytes(stream, requestid, data, iscbor=False,
maxframesize=DEFAULT_MAX_FRAME_SIZE):
"""Create a raw frame to send a bytes response from static bytes input.
@@ -358,9 +358,13 @@
# Simple case of a single frame.
if len(data) <= maxframesize:
+ flags = FLAG_BYTES_RESPONSE_EOS
+ if iscbor:
+ flags |= FLAG_BYTES_RESPONSE_CBOR
+
yield stream.makeframe(requestid=requestid,
typeid=FRAME_TYPE_BYTES_RESPONSE,
- flags=FLAG_BYTES_RESPONSE_EOS,
+ flags=flags,
payload=data)
return
@@ -375,6 +379,9 @@
else:
flags = FLAG_BYTES_RESPONSE_CONTINUATION
+ if iscbor:
+ flags |= FLAG_BYTES_RESPONSE_CBOR
+
yield stream.makeframe(requestid=requestid,
typeid=FRAME_TYPE_BYTES_RESPONSE,
flags=flags,
@@ -608,7 +615,7 @@
return meth(frame)
- def onbytesresponseready(self, stream, requestid, data):
+ def onbytesresponseready(self, stream, requestid, data, iscbor=False):
"""Signal that a bytes response is ready to be sent to the client.
The raw bytes response is passed as an argument.
@@ -617,7 +624,8 @@
def sendframes():
for frame in createbytesresponseframesfrombytes(stream, requestid,
- data):
+ data,
+ iscbor=iscbor):
yield frame
self._activecommands.remove(requestid)