Browse Source

Fix for DNS fail in HTTP request

Closes GH-653.
v0.7.4-release
Richard Rodger 14 years ago
committed by Ryan Dahl
parent
commit
b11d78b386
  1. 7
      lib/http.js
  2. 40
      test/simple/test-http-dns-fail.js

7
lib/http.js

@ -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

@ -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…
Cancel
Save