diff -r c22fd3c4c23e -r 0b7475ea38cf mercurial/wireprotoframing.py --- 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)