diff --git a/lib/receiver.js b/lib/receiver.js index e11e26618..2d29d62bb 100644 --- a/lib/receiver.js +++ b/lib/receiver.js @@ -417,7 +417,13 @@ class Receiver extends Writable { } data = this.consume(this._payloadLength); - if (this._masked) unmask(data, this._mask); + + if ( + this._masked && + (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0 + ) { + unmask(data, this._mask); + } } if (this._opcode > 0x07) return this.controlMessage(data); diff --git a/lib/sender.js b/lib/sender.js index 3ff623366..3e0058677 100644 --- a/lib/sender.js +++ b/lib/sender.js @@ -100,6 +100,10 @@ class Sender { target[offset - 2] = mask[2]; target[offset - 1] = mask[3]; + if ((mask[0] | mask[1] | mask[2] | mask[3]) === 0) { + return [target, data]; + } + if (merge) { applyMask(data, mask, target, offset, data.length); return [target];