Merge remote-tracking branch 'upstream/v0.10'
authorTimothy J Fontaine <tjfontaine@gmail.com>
Mon, 10 Feb 2014 19:21:09 +0000 (11:21 -0800)
committerTimothy J Fontaine <tjfontaine@gmail.com>
Mon, 10 Feb 2014 19:21:09 +0000 (11:21 -0800)
Conflicts:
lib/_stream_writable.js

1  2 
lib/_stream_writable.js
test/simple/test-net-error-twice.js

@@@ -108,15 -105,7 +108,15 @@@ function WritableState(options, stream
  
    this.buffer = [];
  
-   // Internal, used in net.js and _tls_wrap.js
 +  // number of pending user-supplied write callbacks
 +  // this must be 0 before 'finish' can be emitted
 +  this.pendingcb = 0;
 +
 +  // emit prefinish if the only thing we're waiting for is _write cbs
 +  // This is relevant for synchronous Transform streams
 +  this.prefinished = false;
 +
+   // True if the error was already emitted and should not be thrown again
    this.errorEmitted = false;
  }
  
index 0000000,5435930..5ab370e
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,50 +1,53 @@@
 -    client.resume();
+ // Copyright Joyent, Inc. and other Node contributors.
+ //
+ // Permission is hereby granted, free of charge, to any person obtaining a
+ // copy of this software and associated documentation files (the
+ // "Software"), to deal in the Software without restriction, including
+ // without limitation the rights to use, copy, modify, merge, publish,
+ // distribute, sublicense, and/or sell copies of the Software, and to permit
+ // persons to whom the Software is furnished to do so, subject to the
+ // following conditions:
+ //
+ // The above copyright notice and this permission notice shall be included
+ // in all copies or substantial portions of the Software.
+ //
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
+ var common = require('../common');
+ var assert = require('assert');
+ var net = require('net');
+ var buf = new Buffer(2 * 1024 * 1024);
+ buf.fill(0x62);
+ var errs = [];
+ var srv = net.createServer(function onConnection(conn) {
+   conn.write(buf);
+   conn.on('error', function (err) {
+     errs.push(err);
+     if (errs.length > 1 && errs[0] === errs[1])
+       assert(false, "We should not be emitting the same error twice");
+   });
++  conn.on('close', function() {
++    srv.unref();
++  });
+ }).listen(common.PORT, function () {
+   var client = net.connect({ port: common.PORT });
+   client.on('connect', function () {
 -}).unref();
+     client.destroy();
+   });
++});
+ process.on('exit', function() {
++  console.log(errs);
+   assert.equal(errs.length, 1);
+ });