From 2e36acd1f868e5683e1b49d746fab7ee06b0cb4c Mon Sep 17 00:00:00 2001 From: Qian Wang Date: Sat, 23 Mar 2019 18:02:01 +1100 Subject: [PATCH] Add square brackets to IPv6 --- cmd/ck-client/ck-client.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/cmd/ck-client/ck-client.go b/cmd/ck-client/ck-client.go index 40cc3fc..823cdfb 100644 --- a/cmd/ck-client/ck-client.go +++ b/cmd/ck-client/ck-client.go @@ -48,7 +48,12 @@ func makeRemoteConn(sta *client.State) (net.Conn, error) { d := net.Dialer{Control: protector} clientHello := TLS.ComposeInitHandshake(sta) - remoteConn, err := d.Dial("tcp", sta.SS_REMOTE_HOST+":"+sta.SS_REMOTE_PORT) + connectingIP := sta.SS_REMOTE_HOST + if net.ParseIP(connectingIP).To4() == nil { + // IPv6 needs square brackets + connectingIP = "[" + connectingIP + "]" + } + remoteConn, err := d.Dial("tcp", connectingIP+":"+sta.SS_REMOTE_PORT) if err != nil { log.Printf("Connecting to remote: %v\n", err) return nil, err @@ -154,8 +159,13 @@ func main() { if sta.TicketTimeHint == 0 { log.Fatal("TicketTimeHint cannot be empty or 0") } - listener, err := net.Listen("tcp", sta.SS_LOCAL_HOST+":"+sta.SS_LOCAL_PORT) - log.Println("Listening for ss on " + sta.SS_LOCAL_HOST + ":" + sta.SS_LOCAL_PORT) + listeningIP := sta.SS_LOCAL_HOST + if net.ParseIP(listeningIP).To4() == nil { + // IPv6 needs square brackets + listeningIP = "[" + listeningIP + "]" + } + listener, err := net.Listen("tcp", listeningIP+":"+sta.SS_LOCAL_PORT) + log.Println("Listening for ss on " + listeningIP + ":" + sta.SS_LOCAL_PORT) if err != nil { log.Fatal(err) }