length-prefixed-stream
Advanced tools
Comparing version 1.3.2 to 1.4.0
@@ -5,4 +5,4 @@ var varint = require('varint') | ||
var Decoder = function () { | ||
if (!(this instanceof Decoder)) return new Decoder() | ||
var Decoder = function (opts) { | ||
if (!(this instanceof Decoder)) return new Decoder(opts) | ||
stream.Transform.call(this) | ||
@@ -12,3 +12,4 @@ | ||
this._message = null | ||
this._prefix = new Buffer(100) | ||
this._limit = opts && opts.limit || 0 | ||
this._prefix = new Buffer(this._limit ? varint.encodingLength(this._limit) : 100) | ||
this._ptr = 0 | ||
@@ -28,5 +29,7 @@ } | ||
for (offset; offset < data.length; offset++) { | ||
if (this._ptr >= this._prefix.length) return this._prefixError(data) | ||
this._prefix[this._ptr++] = data[offset] | ||
if (!(data[offset] & 0x80)) { | ||
this._missing = varint.decode(this._prefix) | ||
if (this._limit && this._missing > this._limit) return this._prefixError(data) | ||
this._ptr = 0 | ||
@@ -39,2 +42,7 @@ return offset + 1 | ||
Decoder.prototype._prefixError = function (data) { | ||
this.emit('error', new Error('Message is larger than max length')) | ||
return data.length | ||
} | ||
Decoder.prototype._parseMessage = function (data, offset) { | ||
@@ -41,0 +49,0 @@ var free = data.length - offset |
{ | ||
"name": "length-prefixed-stream", | ||
"version": "1.3.2", | ||
"version": "1.4.0", | ||
"description": "Streaming length prefixed buffers", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -29,4 +29,14 @@ # length-prefixed-stream | ||
## API | ||
#### `transformStream = lpstream.encode()` | ||
Creates a new encoder transform stream. | ||
#### `transformStream = lpstream.decode()` | ||
Creates a new decoder transform stream. | ||
## License | ||
MIT |
11
test.js
@@ -237,1 +237,12 @@ var tape = require('tape') | ||
}) | ||
tape('message limit', function (t) { | ||
var d = lpstream.decode({limit: 10}) | ||
d.on('error', function (err) { | ||
t.ok(err, 'should error') | ||
t.end() | ||
}) | ||
d.write(new Buffer('zzzzzzzzzzzzzz')) | ||
}) |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
11041
293
41