reduce max resp chunk size well below webrtc max

This commit is contained in:
Spencer Pogorzelski 2023-08-14 15:28:53 -07:00
parent 52a55f616b
commit fa3386468e
2 changed files with 11 additions and 1 deletions

View file

@ -49,4 +49,7 @@ export type WSErrorPayload = {
message: string;
};
// WebRTC max is 16K, let's say 8K to be safe
export const MAX_CHUNK_SIZE = 8 * 1024;
export { Transport } from "./Transport";

View file

@ -5,6 +5,7 @@ import {
C2SRequestTypes,
HTTPRequestPayload,
HTTPResponsePayload,
MAX_CHUNK_SIZE,
ProtoBareHeaders,
S2CRequestType,
S2CRequestTypes,
@ -235,7 +236,13 @@ export class AdriftServer {
const { payload, body } = resp;
this.sendHTTPResponseStart(seq, payload);
for await (const chunk of body) {
this.sendHTTPResponseChunk(seq, new Uint8Array(chunk));
let chunkPart = null;
let chunkRest = chunk;
do {
chunkPart = chunkRest.slice(0, MAX_CHUNK_SIZE);
chunkRest = chunkRest.slice(MAX_CHUNK_SIZE);
this.sendHTTPResponseChunk(seq, new Uint8Array(chunkPart));
} while (chunkRest.byteLength > 0);
}
this.sendHTTPResponseEnd(seq);
break;