Don't error on ENOTCONN from shutdown()

v0.7.4-release
Ryan Dahl 2011-04-11 15:33:24 -07:00
parent dcc2dd5e1f
commit 9ccf0e527f
3 changed files with 46 additions and 2 deletions

View File

@ -1185,7 +1185,7 @@ Agent.prototype._establishNewConnection = function() {
parser.incoming = null;
socket.on('error', function(err) {
debug('AGENT SOCKET ERROR: ' + err.message);
debug('AGENT SOCKET ERROR: ' + err.message + '\n' + err.stack);
var req;
if (socket._httpMessage) {
req = socket._httpMessage;

View File

@ -844,7 +844,12 @@ Socket.prototype._shutdown = function() {
try {
this._shutdownImpl();
} catch (e) {
this.destroy(e);
if (e.code == 'ENOTCONN') {
// Allowed.
this.destroy();
} else {
this.destroy(e);
}
}
} else {
// writable but not readable

View File

@ -0,0 +1,39 @@
var assert = require('assert');
var https = require('https');
var tls = require('tls');
var options = {
host: 'github.com',
path: '/kriskowal/tigerblood/',
port: 443
};
var req = https.get(options, function(response) {
var recved = 0;
response.on('data', function(chunk) {
recved += chunk.length;
console.log('Response data.');
});
response.on('end', function() {
console.log('Response end.');
// Does not work
loadDom();
});
});
req.on('error', function(e) {
console.log('Error on get.');
});
function loadDom() {
// Do a lot of computation to stall the process.
// In the meantime the socket will be disconnected.
for (var i = 0; i < 1e8; i++) {
;
}
console.log('Dom loaded.');
}