package backend import ( "fmt" "net" "strconv" ) // parsePeer splits a "host:port" string. Uses net.SplitHostPort so IPv6 // bracket notation (e.g. "[::1]:9990") is handled correctly. func parsePeer(peer string) (host string, port int, err error) { h, portStr, err := net.SplitHostPort(peer) if err != nil { return "", 0, fmt.Errorf("invalid peer %q: %w", peer, err) } if h == "" { return "", 0, fmt.Errorf("invalid peer %q: empty host", peer) } port, err = strconv.Atoi(portStr) if err != nil || port <= 0 || port > 65535 { return "", 0, fmt.Errorf("invalid port in peer %q", peer) } return h, port, nil }