diff --git a/lib/server/pipe.js b/lib/server/pipe.js index c9b87e09..540815bb 100644 --- a/lib/server/pipe.js +++ b/lib/server/pipe.js @@ -35,12 +35,19 @@ function create(params) { var gzip, read, write, isFsWrite, p = params, - func = Util.retExec(p.callback); + func = Util.retExec(p.callback), + options = { + bufferSize: 4 * 1024 + }; if (p) { - read = p.read || fs.createReadStream(p.from, { - bufferSize: 4 * 1024 - }); + if (p.range) + options = { + start : p.range.start, + end : p.range.end, + }; + + read = p.read || fs.createReadStream(p.from, options); if (p.write) write = p.write; @@ -63,16 +70,11 @@ read.on('error', func); Util.ifExec(!isFsWrite, function() { - read.on('data', function(data) { - write.write(data); + read.pipe(write, { + end: !p.notEnd }); - read.on('end', function() { - if (!p.notEnd) - write.end(); - - func(); - }); + read.on('end', func); }, function(callback) { write.on('open', callback); });