diff --git a/lib/connect.js b/lib/connect.js index e746d5f8..4cde5d90 100644 --- a/lib/connect.js +++ b/lib/connect.js @@ -129,9 +129,10 @@ function connect(url, socketOptions, openCallback) { fields = openFrames(url.vhost, config, sockopts.credentials || credentials.plain(user, pass), extraClientProperties); } else { var parts = URL(url, true); // yes, parse the query string + var host = parts.hostname.replace(/^\[|\]$/g, ''); protocol = parts.protocol; - sockopts.host = parts.hostname; - sockopts.servername = sockopts.servername || parts.hostname; + sockopts.host = host; + sockopts.servername = sockopts.servername || host; sockopts.port = parseInt(parts.port) || ((protocol === 'amqp:') ? 5672 : 5671); var vhost = parts.pathname ? parts.pathname.substr(1) : null; fields = openFrames(vhost, parts.query, sockopts.credentials || credentialsFromUrl(parts), extraClientProperties); diff --git a/test/connect.js b/test/connect.js index fcfd5c01..281e7f2f 100644 --- a/test/connect.js +++ b/test/connect.js @@ -130,6 +130,13 @@ suite("Connect API", function() { kCallback(succeed(done), fail(done))); }); + test("ipv6", function(done) { + connect('amqp://[::1]', {}, function(err, connection) { + if (err) { return done(err); } + done(); + }); + }); + test("using unsupported mechanism", function(done) { var creds = { mechanism: 'UNSUPPORTED',