[connectors/http] prevent errors caused by multi-byte characters in paths (#756)

* [connectors/http] catch errors caused by multi-byte paths

* Check url validity before to run the request

* Updated test
This commit is contained in:
Spencer
2019-01-23 13:29:42 -08:00
committed by GitHub
parent a25a8d996e
commit 0d07233b46
2 changed files with 17 additions and 0 deletions

View File

@ -19,6 +19,7 @@ var qs = require('querystring');
var AgentKeepAlive = require('agentkeepalive');
var ConnectionAbstract = require('../connection');
var zlib = require('zlib');
var INVALID_PATH_REGEX = /[^\u0021-\u00ff]/
/**
* Connector used to talk to an elasticsearch node via HTTP
@ -166,6 +167,11 @@ HttpConnector.prototype.request = function (params, cb) {
}
}, this);
if (INVALID_PATH_REGEX.test(reqParams.path) === true) {
cb(new TypeError('ERR_UNESCAPED_CHARACTERS: ' + reqParams.path))
return function () {}
}
request = this.hand.request(reqParams, function (_incoming) {
incoming = _incoming;
status = incoming.statusCode;

View File

@ -230,6 +230,17 @@ describe('Http Connector', function () {
done();
});
});
it('calls back with error when http.request throws an error', function (done) {
var con = new HttpConnection(new Host('http://google.com/thisisinvalid\uffe2'));
stub(con.log, 'error');
con.request({}, function (err) {
expect(err.message).to.eql('ERR_UNESCAPED_CHARACTERS: /thisisinvalid\uffe2');
done();
});
});
});
describe('#request with incomming message error', function () {