Closed
Description
openedon Mar 10, 2020
BotFramework-Streaming library does not chunk the packets into PayloadConstants.MaxPayloadLength bytes anymore. As a result streams that are larger than the PayloadConstants.MaxLength (999999) don't get sent correctly.
The writePacket function in libraries\botframework-streaming\src\payloadTransport\payloadSender.ts must look like this -
private writePacket(packet: ISendPacket): void {
try {
if (packet.header.payloadLength > 0 && packet.payload) {
let leftOver = packet.header.payloadLength;
while (leftOver > 0) {
let count = leftOver <= PayloadConstants.MaxPayloadLength ? leftOver : PayloadConstants.MaxPayloadLength;
let chunk = packet.payload.read(count);
var header = packet.header;
header.payloadLength = count;
header.end = leftOver <= PayloadConstants.MaxPayloadLength;
let sendHeaderBuffer: Buffer = Buffer.alloc(PayloadConstants.MaxHeaderLength);
HeaderSerializer.serialize(header, sendHeaderBuffer);
this.sender.send(sendHeaderBuffer);
this.sender.send(chunk);
leftOver-= chunk.length;
}
if (packet.sentCallback) {
packet.sentCallback();
}
}
} catch (e) {
this.disconnect(new TransportDisconnectedEvent(e.message));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment