Skip to content

Commit 59e906c

Browse files
egorseSergey Egorov
and
Sergey Egorov
authored
zmq4: fix splitAddr to properly join host and port for ipv6
Fixes #83 Co-authored-by: Sergey Egorov <sergey.egorov@teleste.com>
1 parent de8318e commit 59e906c

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed

utils.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func splitAddr(v string) (network, addr string, err error) {
4141
case "", "*":
4242
host = "0.0.0.0"
4343
}
44-
addr = host + ":" + port
44+
addr = net.JoinHostPort(host, port)
4545
return network, addr, err
4646

4747
case "ipc":

utils_test.go

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// Copyright 2018 The go-zeromq Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style
3+
// license that can be found in the LICENSE file.
4+
5+
package zmq4
6+
7+
import (
8+
"fmt"
9+
"testing"
10+
)
11+
12+
func TestSplitAddr(t *testing.T) {
13+
testCases := []struct {
14+
desc string
15+
v string
16+
network string
17+
addr string
18+
err error
19+
}{
20+
{
21+
desc: "tcp wild",
22+
v: "tcp://*:5000",
23+
network: "tcp",
24+
addr: "0.0.0.0:5000",
25+
err: nil,
26+
},
27+
{
28+
desc: "tcp ipv4",
29+
v: "tcp://127.0.0.1:6000",
30+
network: "tcp",
31+
addr: "127.0.0.1:6000",
32+
err: nil,
33+
},
34+
{
35+
desc: "tcp ipv6",
36+
v: "tcp://[::1]:7000",
37+
network: "tcp",
38+
addr: "[::1]:7000",
39+
err: nil,
40+
},
41+
}
42+
for _, tc := range testCases {
43+
t.Run(tc.desc, func(t *testing.T) {
44+
network, addr, err := splitAddr(tc.v)
45+
if network != tc.network {
46+
t.Fatalf("unexpected network: got=%v, want=%v", network, tc.network)
47+
}
48+
if addr != tc.addr {
49+
t.Fatalf("unexpected address: got=%q, want=%q", addr, tc.addr)
50+
}
51+
if fmt.Sprintf("%+v", err) != fmt.Sprintf("%+v", tc.err) { // nil-safe comparison errors by value
52+
t.Fatalf("unexpected error: got=%+v, want=%+v", err, tc.err)
53+
}
54+
})
55+
}
56+
}

0 commit comments

Comments
 (0)