From 9c68a286b1b0be913bbbca112ea4d241eda96d91 Mon Sep 17 00:00:00 2001 From: migounette Date: Mon, 23 Jun 2014 16:38:37 +0200 Subject: [PATCH] Add full IPv6 redis connection capability in a full IPv6 network or in a mix network (IPv4 and IPv6) --- README.md | 1 + changelog.md | 7 +++++++ index.js | 17 +++++++++++------ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index d8bd75ae32..b837bb99cb 100644 --- a/README.md +++ b/README.md @@ -210,6 +210,7 @@ limits total time for client to reconnect. Value is provided in milliseconds and * `max_attempts` defaults to `null`. By default client will try reconnecting until connected. Setting `max_attempts` limits total amount of reconnects. * `auth_pass` defaults to `null`. By default client will try connecting without auth. If set, client will run redis auth command on connect. +* `family` defaults to `IPv4`. By default client will try connecting with a IPv4 DNS resolution when a FQDN host is set. You can also specify and IPv6 for forcing a IPv6 FQDN resolution. ```js var redis = require("redis"), diff --git a/changelog.md b/changelog.md index e0ae48c92a..74aa941e09 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,13 @@ Changelog ========= +## v0.10.4 - Jun 23, 2014 + +* Add redis-cli createClient(port, host, options) full IPv6 Network capability + Specify the family type IPv4 or IPv6 in the options object. + + eg: { 'family' : 'IPv6' } + ## v0.10.3 - May 22, 2014 * Update command list to match Redis 2.8.9 (Charles Feng) diff --git a/index.js b/index.js index 13964983e0..f4e0095c0e 100644 --- a/index.js +++ b/index.js @@ -1182,16 +1182,21 @@ RedisClient.prototype.eval = RedisClient.prototype.EVAL = function () { exports.createClient = function (port_arg, host_arg, options) { - var port = port_arg || default_port, - host = host_arg || default_host, - redis_client, net_client; - net_client = net.createConnection(port, host); + var cnxOptions = { + 'port' : port_arg || default_port, + 'host' : host_arg || default_host, + 'family' : options.family || 'IPv4' + }; + + var redis_client, net_client; + + net_client = net.createConnection(cnxOptions); redis_client = new RedisClient(net_client, options); - redis_client.port = port; - redis_client.host = host; + redis_client.port = cnxOptions.port; + redis_client.host = cnxOptions.host; return redis_client; };