You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-06 02:15:48 +03:00
Fix address always set to 127.0.0.1:6379 in case the host/port is set in the tls options
This commit is contained in:
12
index.js
12
index.js
@@ -50,6 +50,14 @@ function RedisClient (options, stream) {
|
|||||||
EventEmitter.call(this);
|
EventEmitter.call(this);
|
||||||
var cnx_options = {};
|
var cnx_options = {};
|
||||||
var self = this;
|
var self = this;
|
||||||
|
/* istanbul ignore next: travis does not work with stunnel atm. Therefore the tls tests are skipped on travis */
|
||||||
|
for (var tls_option in options.tls) { // jshint ignore: line
|
||||||
|
cnx_options[tls_option] = options.tls[tls_option];
|
||||||
|
// Copy the tls options into the general options to make sure the address is set right
|
||||||
|
if (tls_option === 'port' || tls_option === 'host' || tls_option === 'path' || tls_option === 'family') {
|
||||||
|
options[tls_option] = options.tls[tls_option];
|
||||||
|
}
|
||||||
|
}
|
||||||
if (stream) {
|
if (stream) {
|
||||||
// The stream from the outside is used so no connection from this side is triggered but from the server this client should talk to
|
// The stream from the outside is used so no connection from this side is triggered but from the server this client should talk to
|
||||||
// Reconnect etc won't work with this. This requires monkey patching to work, so it is not officially supported
|
// Reconnect etc won't work with this. This requires monkey patching to work, so it is not officially supported
|
||||||
@@ -64,10 +72,6 @@ function RedisClient (options, stream) {
|
|||||||
cnx_options.family = (!options.family && net.isIP(cnx_options.host)) || (options.family === 'IPv6' ? 6 : 4);
|
cnx_options.family = (!options.family && net.isIP(cnx_options.host)) || (options.family === 'IPv6' ? 6 : 4);
|
||||||
this.address = cnx_options.host + ':' + cnx_options.port;
|
this.address = cnx_options.host + ':' + cnx_options.port;
|
||||||
}
|
}
|
||||||
/* istanbul ignore next: travis does not work with stunnel atm. Therefore the tls tests are skipped on travis */
|
|
||||||
for (var tls_option in options.tls) { // jshint ignore: line
|
|
||||||
cnx_options[tls_option] = options.tls[tls_option];
|
|
||||||
}
|
|
||||||
// Warn on misusing deprecated functions
|
// Warn on misusing deprecated functions
|
||||||
if (typeof options.retry_strategy === 'function') {
|
if (typeof options.retry_strategy === 'function') {
|
||||||
if ('max_attempts' in options) {
|
if ('max_attempts' in options) {
|
||||||
|
@@ -60,6 +60,7 @@ describe('TLS connection tests', function () {
|
|||||||
tls: tls_options
|
tls: tls_options
|
||||||
});
|
});
|
||||||
var time = 0;
|
var time = 0;
|
||||||
|
assert.strictEqual(client.address, '127.0.0.1:' + tls_port);
|
||||||
|
|
||||||
client.once('ready', function () {
|
client.once('ready', function () {
|
||||||
helper.killConnection(client);
|
helper.killConnection(client);
|
||||||
@@ -87,18 +88,20 @@ describe('TLS connection tests', function () {
|
|||||||
|
|
||||||
describe('when not connected', function () {
|
describe('when not connected', function () {
|
||||||
|
|
||||||
it('connect with host and port provided in the options object', function (done) {
|
it('connect with host and port provided in the tls object', function (done) {
|
||||||
if (skip) this.skip();
|
if (skip) this.skip();
|
||||||
|
var tls = utils.clone(tls_options);
|
||||||
|
tls.port = tls_port;
|
||||||
|
tls.host = 'localhost';
|
||||||
client = redis.createClient({
|
client = redis.createClient({
|
||||||
host: 'localhost',
|
|
||||||
connect_timeout: 1000,
|
connect_timeout: 1000,
|
||||||
port: tls_port,
|
tls: tls
|
||||||
tls: tls_options
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// verify connection is using TCP, not UNIX socket
|
// verify connection is using TCP, not UNIX socket
|
||||||
assert.strictEqual(client.connection_options.host, 'localhost');
|
assert.strictEqual(client.connection_options.host, 'localhost');
|
||||||
assert.strictEqual(client.connection_options.port, tls_port);
|
assert.strictEqual(client.connection_options.port, tls_port);
|
||||||
|
assert.strictEqual(client.address, 'localhost:' + tls_port);
|
||||||
assert(client.stream.encrypted);
|
assert(client.stream.encrypted);
|
||||||
|
|
||||||
client.set('foo', 'bar');
|
client.set('foo', 'bar');
|
||||||
@@ -115,6 +118,7 @@ describe('TLS connection tests', function () {
|
|||||||
port: tls_port,
|
port: tls_port,
|
||||||
tls: faulty_cert
|
tls: faulty_cert
|
||||||
});
|
});
|
||||||
|
assert.strictEqual(client.address, 'localhost:' + tls_port);
|
||||||
client.on('error', function (err) {
|
client.on('error', function (err) {
|
||||||
assert(/DEPTH_ZERO_SELF_SIGNED_CERT/.test(err.code || err.message), err);
|
assert(/DEPTH_ZERO_SELF_SIGNED_CERT/.test(err.code || err.message), err);
|
||||||
client.end(true);
|
client.end(true);
|
||||||
|
Reference in New Issue
Block a user