Skip to content

Commit 351ba82

Browse files
maunvzMauricio Narvaez
andauthored
fix: properly encode empty buffer in base64 encoding (#131)
An empty buffer was encoded into `bundefined` instead of `b` (reproduced on Chrome v108 / Ubuntu). Co-authored-by: Mauricio Narvaez <[email protected]>
1 parent 7fbea71 commit 351ba82

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

lib/encodePacket.browser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ const encodeBlobAsBase64 = (
4545
const fileReader = new FileReader();
4646
fileReader.onload = function() {
4747
const content = (fileReader.result as string).split(",")[1];
48-
callback("b" + content);
48+
callback("b" + (content || ""));
4949
};
5050
return fileReader.readAsDataURL(data);
5151
};

test/browser.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,18 @@ describe("engine.io-parser (browser only)", () => {
9797
done();
9898
});
9999
});
100+
101+
it("should encode/decode a string + a 0-length ArrayBuffer payload", done => {
102+
const packets: Packet[] = [
103+
{ type: "message", data: "test" },
104+
{ type: "message", data: createArrayBuffer([]) }
105+
];
106+
encodePayload(packets, payload => {
107+
expect(payload).to.eql("4test\x1eb");
108+
expect(decodePayload(payload, "arraybuffer")).to.eql(packets);
109+
done();
110+
});
111+
});
100112
}
101113
});
102114
});

0 commit comments

Comments
 (0)