diff --git a/lib/connection.js b/lib/connection.js index 94fcae0..643827c 100644 --- a/lib/connection.js +++ b/lib/connection.js @@ -431,14 +431,14 @@ FTP.prototype.list = function(path, zcomp, cb) { return cb(); } - var sockerr, done = false, replies = 0, entries, buffer = '', source = sock; + var sockerr, done = false, replies = 0, entries, buffer = [], source = sock; if (zcomp) { source = zlib.createInflate(); sock.pipe(source); } - source.on('data', function(chunk) { buffer += chunk.toString('binary'); }); + source.on('data', function(chunk) { buffer.push(chunk); }); source.once('error', function(err) { if (!sock.aborting) sockerr = err; @@ -452,6 +452,7 @@ FTP.prototype.list = function(path, zcomp, cb) { } function final() { if (done && replies === 2) { + buffer = Buffer.concat(buffer).toString(); replies = 3; if (sockerr) return cb(new Error('Unexpected data connection error: ' + sockerr));