-
Notifications
You must be signed in to change notification settings - Fork 288
Closed
Description
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));
}
}
Metadata
Metadata
Assignees
Labels
R8Release 8 - March 16th, 2020Release 8 - March 16th, 2020