You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-10 11:43:01 +03:00
Fix parser regression
Add regression test Rename big_offset to big_str_size Fixes #924
This commit is contained in:
@@ -6,7 +6,7 @@ function JavascriptReplyParser() {
|
||||
this.name = exports.name;
|
||||
this._buffer = new Buffer(0);
|
||||
this._offset = 0;
|
||||
this._big_offset = 0;
|
||||
this._big_str_size = 0;
|
||||
this._chunks_size = 0;
|
||||
this._buffers = [];
|
||||
this._type = 0;
|
||||
@@ -53,7 +53,7 @@ JavascriptReplyParser.prototype._parseResult = function (type) {
|
||||
|
||||
if (end + 2 > this._buffer.length) {
|
||||
this._chunks_size = this._buffer.length - this._offset - 2;
|
||||
this._big_offset = packetHeader;
|
||||
this._big_str_size = packetHeader;
|
||||
throw new IncompleteReadBuffer('Wait for more data.');
|
||||
}
|
||||
// Set the offset to after the delimiter
|
||||
@@ -85,17 +85,17 @@ JavascriptReplyParser.prototype._parseResult = function (type) {
|
||||
};
|
||||
|
||||
JavascriptReplyParser.prototype.execute = function (buffer) {
|
||||
if (this._chunks_size !== 0 && this._big_offset > this._chunks_size + buffer.length) {
|
||||
this._buffers.push(buffer);
|
||||
this._chunks_size += buffer.length;
|
||||
return;
|
||||
}
|
||||
if (this._buffers.length !== 0) {
|
||||
if (this._chunks_size !== 0) {
|
||||
if (this._big_str_size > this._chunks_size + buffer.length) {
|
||||
this._buffers.push(buffer);
|
||||
this._chunks_size += buffer.length;
|
||||
return;
|
||||
}
|
||||
this._buffers.unshift(this._offset === 0 ? this._buffer : this._buffer.slice(this._offset));
|
||||
this._buffers.push(buffer);
|
||||
this._buffer = Buffer.concat(this._buffers);
|
||||
this._buffers = [];
|
||||
this._big_offset = 0;
|
||||
this._big_str_size = 0;
|
||||
this._chunks_size = 0;
|
||||
} else if (this._offset >= this._buffer.length) {
|
||||
this._buffer = buffer;
|
||||
|
Reference in New Issue
Block a user