Skip to content

Commit a96521a

Browse files
Fix(perMessageDeflate): Don't close stream after flush.
- Based on the previous fix, we close the stream when maxPayload is reached, now we do not need to close it on flush. - Merged tests
1 parent 8a0a1c4 commit a96521a

File tree

2 files changed

+5
-20
lines changed

2 files changed

+5
-20
lines changed

lib/permessage-deflate.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,9 @@ class PerMessageDeflate {
366366
const err = this._inflate[kError];
367367

368368
if (err) {
369-
this._inflate.close();
369+
//
370+
// The stream was already closed in `inflateOnData()`.
371+
//
370372
this._inflate = null;
371373
callback(err);
372374
return;
@@ -494,7 +496,7 @@ function inflateOnData(chunk) {
494496
this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';
495497
this[kError][kStatusCode] = 1009;
496498
this.removeListener('data', inflateOnData);
497-
this.close()
499+
this.close();
498500
}
499501

500502
/**

test/permessage-deflate.test.js

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -592,24 +592,7 @@ describe('PerMessageDeflate', () => {
592592

593593
it("doesn't call the callback twice when `maxPayload` is exceeded", (done) => {
594594
const perMessageDeflate = new PerMessageDeflate({}, false, 25);
595-
const buf = Buffer.from('A'.repeat(50))
596-
597-
perMessageDeflate.accept([{}]);
598-
perMessageDeflate.compress(buf, true, (err, data) => {
599-
if (err) return done(err);
600-
601-
perMessageDeflate.decompress(data, true, (err) => {
602-
assert.ok(err instanceof RangeError);
603-
assert.strictEqual(err.message, 'Max payload size exceeded');
604-
done();
605-
});
606-
});
607-
});
608-
609-
610-
it("returns correct error code on large payloads exceeding `maxPayload`", (done) => {
611-
const perMessageDeflate = new PerMessageDeflate({}, false, 1e6);
612-
const buf = Buffer.from('A'.repeat(2**29-24));
595+
const buf = Buffer.from('A'.repeat(1024 * 1024));
613596

614597
perMessageDeflate.accept([{}]);
615598
perMessageDeflate.compress(buf, true, (err, data) => {

0 commit comments

Comments
 (0)