Skip to content

Commit 2377dcc

Browse files
[fix] Do not mutate the input upon packet encoding (#105)
Fixes #95
1 parent ebdf467 commit 2377dcc

File tree

2 files changed

+4
-9
lines changed

2 files changed

+4
-9
lines changed

lib/browser.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,7 @@ function encodeBlobAsArrayBuffer(packet, supportsBinary, callback) {
158158

159159
var fr = new FileReader();
160160
fr.onload = function() {
161-
packet.data = fr.result;
162-
exports.encodePacket(packet, supportsBinary, true, callback);
161+
exports.encodePacket({ type: packet.type, data: fr.result }, supportsBinary, true, callback);
163162
};
164163
return fr.readAsArrayBuffer(packet.data);
165164
}

lib/index.js

+3-7
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,7 @@ exports.encodePacket = function (packet, supportsBinary, utf8encode, callback) {
6464
if (Buffer.isBuffer(packet.data)) {
6565
return encodeBuffer(packet, supportsBinary, callback);
6666
} else if (packet.data && (packet.data.buffer || packet.data) instanceof ArrayBuffer) {
67-
packet.data = arrayBufferToBuffer(packet.data);
68-
return encodeBuffer(packet, supportsBinary, callback);
67+
return encodeBuffer({ type: packet.type, data: arrayBufferToBuffer(packet.data) }, supportsBinary, callback);
6968
}
7069

7170
// Sending data as a utf-8 string
@@ -102,12 +101,9 @@ function encodeBuffer(packet, supportsBinary, callback) {
102101
*/
103102

104103
exports.encodeBase64Packet = function(packet, callback){
105-
if (!Buffer.isBuffer(packet.data)) {
106-
packet.data = arrayBufferToBuffer(packet.data);
107-
}
108-
104+
var data = Buffer.isBuffer(packet.data) ? packet.data : arrayBufferToBuffer(packet.data);
109105
var message = 'b' + packets[packet.type];
110-
message += packet.data.toString('base64');
106+
message += data.toString('base64');
111107
return callback(message);
112108
};
113109

0 commit comments

Comments
 (0)