diff --git a/.travis.yml b/.travis.yml index c24c59b5d..e5d9bde26 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,15 +1,19 @@ language: node_js + node_js: - node - - io.js - 0.12 - 0.10 -sudo: false -after_script: "npm run test-cov && cat ./coverage/lcov.info | codecov && cat ./coverage/lcov.info | coveralls" +after_script: + - npm run test-cov + - cat ./coverage/lcov.info | codecov + - cat ./coverage/lcov.info | coveralls webhooks: urls: https://webhooks.gitter.im/e/237280ed4796c19cc626 on_success: change # options: [always|never|change] default: always on_failure: always # options: [always|never|change] default: always on_start: false # default: false + +sudo: false diff --git a/request.js b/request.js index 6310e0a6b..809611d55 100644 --- a/request.js +++ b/request.js @@ -749,7 +749,12 @@ Request.prototype.start = function () { debug('make request', self.uri.href) - self.req = self.httpModule.request(reqOptions) + try { + self.req = self.httpModule.request(reqOptions) + } catch (err) { + self.emit('error', err) + return + } if (self.timing) { self.startTime = new Date().getTime() @@ -1389,7 +1394,9 @@ Request.prototype.end = function (chunk) { if (!self._started) { self.start() } - self.req.end() + if (self.req) { + self.req.end() + } } Request.prototype.pause = function () { var self = this diff --git a/tests/test-headers.js b/tests/test-headers.js index 6ec9dba04..dbd3c4d57 100644 --- a/tests/test-headers.js +++ b/tests/test-headers.js @@ -162,6 +162,21 @@ tape('undefined headers', function(t) { }) }) +tape('catch invalid characters error', function(t) { + request({ + url: s.url + '/headers.json', + headers: { + 'test': 'אבגד' + } + }, function(err, res, body) { + t.equal(err.message, 'The header content contains invalid characters') + }) + .on('error', function (err) { + t.equal(err.message, 'The header content contains invalid characters') + t.end() + }) +}) + tape('cleanup', function(t) { s.close(function() { t.end()