44package localapi
55
66import (
7+ "cmp"
78 "context"
89 "crypto/tls"
910 "encoding/json"
@@ -81,15 +82,15 @@ func (h *Handler) serveDebugDERPRegion(w http.ResponseWriter, r *http.Request) {
8182 client * http.Client = http .DefaultClient
8283 )
8384 checkConn := func (derpNode * tailcfg.DERPNode ) bool {
84- port := firstNonzero (derpNode .DERPPort , 443 )
85+ port := cmp . Or (derpNode .DERPPort , 443 )
8586
8687 var (
8788 hasIPv4 bool
8889 hasIPv6 bool
8990 )
9091
9192 // Check IPv4 first
92- addr := net .JoinHostPort (firstNonzero (derpNode .IPv4 , derpNode .HostName ), strconv .Itoa (port ))
93+ addr := net .JoinHostPort (cmp . Or (derpNode .IPv4 , derpNode .HostName ), strconv .Itoa (port ))
9394 conn , err := dialer .DialContext (ctx , "tcp4" , addr )
9495 if err != nil {
9596 st .Errors = append (st .Errors , fmt .Sprintf ("Error connecting to node %q @ %q over IPv4: %v" , derpNode .HostName , addr , err ))
@@ -98,7 +99,7 @@ func (h *Handler) serveDebugDERPRegion(w http.ResponseWriter, r *http.Request) {
9899
99100 // Upgrade to TLS and verify that works properly.
100101 tlsConn := tls .Client (conn , & tls.Config {
101- ServerName : firstNonzero (derpNode .CertName , derpNode .HostName ),
102+ ServerName : cmp . Or (derpNode .CertName , derpNode .HostName ),
102103 })
103104 if err := tlsConn .HandshakeContext (ctx ); err != nil {
104105 st .Errors = append (st .Errors , fmt .Sprintf ("Error upgrading connection to node %q @ %q to TLS over IPv4: %v" , derpNode .HostName , addr , err ))
@@ -108,7 +109,7 @@ func (h *Handler) serveDebugDERPRegion(w http.ResponseWriter, r *http.Request) {
108109 }
109110
110111 // Check IPv6
111- addr = net .JoinHostPort (firstNonzero (derpNode .IPv6 , derpNode .HostName ), strconv .Itoa (port ))
112+ addr = net .JoinHostPort (cmp . Or (derpNode .IPv6 , derpNode .HostName ), strconv .Itoa (port ))
112113 conn , err = dialer .DialContext (ctx , "tcp6" , addr )
113114 if err != nil {
114115 st .Errors = append (st .Errors , fmt .Sprintf ("Error connecting to node %q @ %q over IPv6: %v" , derpNode .HostName , addr , err ))
@@ -117,7 +118,7 @@ func (h *Handler) serveDebugDERPRegion(w http.ResponseWriter, r *http.Request) {
117118
118119 // Upgrade to TLS and verify that works properly.
119120 tlsConn := tls .Client (conn , & tls.Config {
120- ServerName : firstNonzero (derpNode .CertName , derpNode .HostName ),
121+ ServerName : cmp . Or (derpNode .CertName , derpNode .HostName ),
121122 // TODO(andrew-d): we should print more
122123 // detailed failure information on if/why TLS
123124 // verification fails
@@ -166,7 +167,7 @@ func (h *Handler) serveDebugDERPRegion(w http.ResponseWriter, r *http.Request) {
166167 addr = addrs [0 ]
167168 }
168169
169- addrPort := netip .AddrPortFrom (addr , uint16 (firstNonzero (derpNode .STUNPort , 3478 )))
170+ addrPort := netip .AddrPortFrom (addr , uint16 (cmp . Or (derpNode .STUNPort , 3478 )))
170171
171172 txID := stun .NewTxID ()
172173 req := stun .Request (txID )
@@ -292,13 +293,3 @@ func (h *Handler) serveDebugDERPRegion(w http.ResponseWriter, r *http.Request) {
292293 // issued in the first place, tell them specifically that the
293294 // cert is bad not just that the connection failed.
294295}
295-
296- func firstNonzero [T comparable ](items ... T ) T {
297- var zero T
298- for _ , item := range items {
299- if item != zero {
300- return item
301- }
302- }
303- return zero
304- }
0 commit comments