Browse Source

Don't error on ENOTCONN from shutdown()

v0.7.4-release
Ryan Dahl 14 years ago
parent
commit
9ccf0e527f
  1. 2
      lib/http.js
  2. 5
      lib/net.js
  3. 39
      test/disabled/GH-670.js

2
lib/http.js

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

5
lib/net.js

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

39
test/disabled/GH-670.js

@ -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.');
}
Loading…
Cancel
Save