From 21d971a74d674aaa6cfd64454061d957dfccecc7 Mon Sep 17 00:00:00 2001 From: Matt Delaney Date: Tue, 26 May 2015 10:21:06 -0600 Subject: Fixed host parsing to work with ipv6 addresses can now put [ ] around the ip address, without this ipv6 addresses that are like 2605:fd00:4:1000:f816:3eff:fe33:4679 would be have '4679' be interpreted as a port number. --- lib/net/ssh/multi/server.rb | 2 +- test/server_test.rb | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/net/ssh/multi/server.rb b/lib/net/ssh/multi/server.rb index f8fa552..77c5948 100644 --- a/lib/net/ssh/multi/server.rb +++ b/lib/net/ssh/multi/server.rb @@ -44,7 +44,7 @@ module Net; module SSH; module Multi @master = master @options = options.dup - @user, @host, port = host.match(/^(?:([^;,:=]+)@|)(.*?)(?::(\d+)|)$/)[1,3] + @user, @host, port = host.match(/^(?:([^;,:=]+)@|)\[?(.*?)\]?(?::(\d+)|)$/)[1,3] user_opt, port_opt = @options.delete(:user), @options.delete(:port) diff --git a/test/server_test.rb b/test/server_test.rb index 544ea16..ecfa12e 100644 --- a/test/server_test.rb +++ b/test/server_test.rb @@ -14,6 +14,10 @@ class ServerTest < Minitest::Test assert_equal "hello", server('host', :properties => { :foo => "hello" })[:foo] end + def test_ipv6_works_with_given_port_using_bracket_notation + assert_equal 9022, server('[2001:DB8::1234]:9022').port + end + def test_port_should_return_22_by_default assert_equal 22, server('host').port end -- cgit v1.2.1