Skip to content

Commit 382dda7

Browse files
authored
fix(config): server_url should return a valid URI for IPv6 hosts (#194)
* fix(config): server_url should return a valid URI for IPv6 hosts * Add more assertions to Config#server_url
1 parent d895cf3 commit 382dda7

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

lib/redis_client/config.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,13 @@ def server_url
133133
url = "#{url}?db=#{db}"
134134
end
135135
else
136-
url = "redis#{'s' if ssl?}://#{host}:#{port}"
136+
# add brackets to IPv6 address
137+
redis_host = if host.count(":") >= 2
138+
"[#{host}]"
139+
else
140+
host
141+
end
142+
url = "redis#{'s' if ssl?}://#{redis_host}:#{port}"
137143
if db != 0
138144
url = "#{url}/#{db}"
139145
end

test/redis_client/config_test.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,15 @@ def test_server_url
201201
assert_equal "redis://localhost:6379", Config.new.server_url
202202
assert_equal "redis://localhost:6379", Config.new(username: "george", password: "hunter2").server_url
203203
assert_equal "redis://localhost:6379/5", Config.new(db: 5).server_url
204+
assert_equal "redis://192.168.0.1:6379", Config.new(host: "192.168.0.1", port: 6379).server_url
205+
assert_equal "redis://192.168.0.1:6379/5", Config.new(host: "192.168.0.1", port: 6379, db: 5).server_url
204206
assert_equal "redis://example.com:8080", Config.new(host: "example.com", port: 8080).server_url
205207
assert_equal "rediss://localhost:6379", Config.new(ssl: true).server_url
208+
assert_equal "redis://[::1]:6379", Config.new(host: "::1", port: 6379).server_url
209+
assert_equal "redis://[::1]:6379/2", Config.new(host: "::1", port: 6379, db: 2).server_url
210+
assert_equal "redis://[::1]:6379/2", Config.new(url: "redis://[::1]:6379/2").server_url
211+
assert_equal "redis://[ffff:aaaa:1111::fcf]:6379", Config.new(host: "ffff:aaaa:1111::fcf", port: 6379).server_url
212+
assert_equal "redis://[ffff:aaaa:1111::fcf]:6379/2", Config.new(host: "ffff:aaaa:1111::fcf", port: 6379, db: 2).server_url
206213

207214
assert_equal "unix:///var/redis/redis.sock?db=5", Config.new(path: "/var/redis/redis.sock", db: 5).server_url
208215
end

0 commit comments

Comments
 (0)