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:
isaacs 2013-01-14 16:03:38 -08:00
Родитель 27fafd4648
Коммит 20a3c5d09c
3 изменённых файлов: 21 добавлений и 0 удалений

Просмотреть файл

@ -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
});
});