From a2156a0f9c26362e91cec5051abe0098a503885c Mon Sep 17 00:00:00 2001 From: Jes Cok Date: Sun, 21 Apr 2024 22:34:19 +0800 Subject: [PATCH] server/proxy/tcpproxy: use net.JoinHostPort rather than formatAddr formatAddr is just like net.JoinHostPort, I think we can use net.JoinHostPort directly, it's simpler and clearer. Signed-off-by: Jes Cok --- server/proxy/tcpproxy/userspace.go | 19 +-------------- server/proxy/tcpproxy/userspace_test.go | 31 ------------------------- 2 files changed, 1 insertion(+), 49 deletions(-) diff --git a/server/proxy/tcpproxy/userspace.go b/server/proxy/tcpproxy/userspace.go index a109c447c..c579584b6 100644 --- a/server/proxy/tcpproxy/userspace.go +++ b/server/proxy/tcpproxy/userspace.go @@ -19,7 +19,6 @@ import ( "io" "math/rand" "net" - "strings" "sync" "time" @@ -70,29 +69,13 @@ type TCPProxy struct { pickCount int // for round robin } -// The parameter host is returned by net.SplitHostPort previously, -// so it must be a valid host. This function is only to check whether -// it's an IPv6 IP address. -func isIPv6(host string) bool { - return strings.IndexRune(host, ':') != -1 -} - -// A literal IPv6 address in hostport must be enclosed in square -// brackets, as in "[::1]:80", "[::1%lo0]:80". -func formatAddr(host string, port uint16) string { - if isIPv6(host) { - return fmt.Sprintf("[%s]:%d", host, port) - } - return fmt.Sprintf("%s:%d", host, port) -} - func (tp *TCPProxy) Run() error { tp.donec = make(chan struct{}) if tp.MonitorInterval == 0 { tp.MonitorInterval = 5 * time.Minute } for _, srv := range tp.Endpoints { - addr := formatAddr(srv.Target, srv.Port) + addr := net.JoinHostPort(srv.Target, fmt.Sprintf("%d", srv.Port)) tp.remotes = append(tp.remotes, &remote{srv: srv, addr: addr}) } diff --git a/server/proxy/tcpproxy/userspace_test.go b/server/proxy/tcpproxy/userspace_test.go index 892e87eb8..2b98cd004 100644 --- a/server/proxy/tcpproxy/userspace_test.go +++ b/server/proxy/tcpproxy/userspace_test.go @@ -129,34 +129,3 @@ func TestUserspaceProxyPriority(t *testing.T) { t.Errorf("got = %s, want %s", got, want) } } - -func TestFormatAddr(t *testing.T) { - addrs := []struct { - host string - port uint16 - expectedAddr string - }{ - { - "192.168.1.10", - 2379, - "192.168.1.10:2379", - }, - { - "::1", - 2379, - "[::1]:2379", - }, - { - "2001:db8::ff00:42:8329", - 80, - "[2001:db8::ff00:42:8329]:80", - }, - } - - for _, addr := range addrs { - actualAddr := formatAddr(addr.host, addr.port) - if actualAddr != addr.expectedAddr { - t.Errorf("actualAddr: %s, expectedAddr: %s", actualAddr, addr.expectedAddr) - } - } -}