diff options
-rw-r--r-- | lib/net/ssh/multi/server.rb | 2 | ||||
-rw-r--r-- | test/server_test.rb | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/lib/net/ssh/multi/server.rb b/lib/net/ssh/multi/server.rb index 0094982..bcf3678 100644 --- a/lib/net/ssh/multi/server.rb +++ b/lib/net/ssh/multi/server.rb @@ -45,7 +45,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 |