streams2: Do not allow hwm < lwm
There was previously an assert() in there, but this part of the code is so high-volume that the added cost made a measurable dent in http_simple. Just checking inline is fine, though, and prevents a lot of potential hazards.
This commit is contained in:
Родитель
27fafd4648
Коммит
20a3c5d09c
|
@ -48,6 +48,9 @@ function ReadableState(options, stream) {
|
|||
this.lowWaterMark = ~~this.lowWaterMark;
|
||||
this.highWaterMark = ~~this.highWaterMark;
|
||||
|
||||
if (this.lowWaterMark > this.highWaterMark)
|
||||
throw new Error('lowWaterMark cannot be higher than highWaterMark');
|
||||
|
||||
this.buffer = [];
|
||||
this.length = 0;
|
||||
this.pipes = null;
|
||||
|
|
|
@ -49,6 +49,9 @@ function WritableState(options, stream) {
|
|||
this.lowWaterMark = ~~this.lowWaterMark;
|
||||
this.highWaterMark = ~~this.highWaterMark;
|
||||
|
||||
if (this.lowWaterMark > this.highWaterMark)
|
||||
throw new Error('lowWaterMark cannot be higher than highWaterMark');
|
||||
|
||||
this.needDrain = false;
|
||||
// at the start of calling end()
|
||||
this.ending = false;
|
||||
|
|
|
@ -318,3 +318,18 @@ test('multipipe', function(t) {
|
|||
r.pipe(w[2]);
|
||||
});
|
||||
});
|
||||
|
||||
assert.throws(function() {
|
||||
var bad = new R({
|
||||
highWaterMark: 10,
|
||||
lowWaterMark: 1000
|
||||
});
|
||||
});
|
||||
|
||||
assert.throws(function() {
|
||||
var W = require('stream').Writable;
|
||||
var bad = new W({
|
||||
highWaterMark: 10,
|
||||
lowWaterMark: 1000
|
||||
});
|
||||
});
|
||||
|
|
Загрузка…
Ссылка в новой задаче