Fix for DNS fail in HTTP request
Closes GH-653.
This commit is contained in:
parent
f07041e6cd
commit
b11d78b386
@ -1166,6 +1166,13 @@ Agent.prototype._establishNewConnection = function() {
|
||||
|
||||
req.emit('error', err);
|
||||
req._hadError = true; // hacky
|
||||
|
||||
// clean up so that agent can handle new requests
|
||||
parser.finish();
|
||||
socket.destroy();
|
||||
self._removeSocket(socket);
|
||||
parsers.free(parser);
|
||||
self._cycle();
|
||||
});
|
||||
|
||||
socket.ondata = function(d, start, end) {
|
||||
|
40
test/simple/test-http-dns-fail.js
Normal file
40
test/simple/test-http-dns-fail.js
Normal file
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Repeated requests for a domain that fails to resolve
|
||||
* should trigger the error event after each attempt.
|
||||
*/
|
||||
|
||||
var common = require('../common');
|
||||
var assert = require('assert');
|
||||
var http = require('http');
|
||||
|
||||
var resDespiteError = false
|
||||
var hadError = 0
|
||||
|
||||
function httpreq(count) {
|
||||
if ( 1 < count ) return
|
||||
|
||||
var req = http.request({
|
||||
host:'not-a-real-domain-name.nobody-would-register-this-as-a-tld',
|
||||
port: 80,
|
||||
path: '/',
|
||||
method: 'GET'
|
||||
}, function(res) {
|
||||
resDespiteError = true
|
||||
});
|
||||
|
||||
req.on('error', function(e){
|
||||
console.log(e.message);
|
||||
hadError++
|
||||
httpreq(count + 1)
|
||||
})
|
||||
|
||||
req.end()
|
||||
}
|
||||
|
||||
httpreq(0)
|
||||
|
||||
|
||||
process.on('exit', function() {
|
||||
assert.equal(false, resDespiteError);
|
||||
assert.equal(2, hadError);
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user