Do not pause request for multipart parsing
authorFelix Geisendörfer <felix@debuggable.com>
Sun, 20 Dec 2009 19:27:06 +0000 (20:27 +0100)
committerRyan Dahl <ry@tinyclouds.org>
Tue, 22 Dec 2009 18:28:30 +0000 (19:28 +0100)
This is actually undesireable as it takes away control from the user who
may want to pause/resume to throttle the upload stream, or synchronize
it with disk flushing.

I actually ran into memory issues when trying to stream huge files to
disc as the file module was building up a huge action buffer. This can
now easily be avoided like this:

part.addListener('body', function(chunk) {
  req.pause();
  file.write(chunk).addCallback(function() {
    req.resume();
  });
}

lib/multipart.js

index c700788..899b2d1 100644 (file)
@@ -53,11 +53,7 @@ proto.init = function(options) {
     var self = this;
     req
       .addListener('body', function(chunk) {
-        req.pause();
         self.write(chunk);
-        setTimeout(function() {
-          req.resume();
-        });
       })
       .addListener('complete', function() {
         self.emit('complete');