]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
conn: document retry loop in StdNetBind.Open
authorJosh Bleecher Snyder <josharian@gmail.com>
Mon, 29 Mar 2021 20:27:21 +0000 (13:27 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Tue, 30 Mar 2021 19:09:38 +0000 (12:09 -0700)
It's not obvious on a first read what the loop is doing.

Signed-off-by: Josh Bleecher Snyder <josharian@gmail.com>
conn/bind_std.go

index a51134169bdc38b94e894952c971e2fb4a33caca..f8b8a1b055ed1ea94864615fd65b54fc77818d78 100644 (file)
@@ -89,6 +89,8 @@ func (bind *StdNetBind) Open(uport uint16) (uint16, error) {
                return 0, ErrBindAlreadyOpen
        }
 
+       // Attempt to open ipv4 and ipv6 listeners on the same port.
+       // If uport is 0, we can retry on failure.
 again:
        port := int(uport)
        var ipv4, ipv6 *net.UDPConn
@@ -98,6 +100,7 @@ again:
                return 0, err
        }
 
+       // Listen on the same port as we're using for ipv4.
        ipv6, port, err = listenNet("udp6", port)
        if uport == 0 && errors.Is(err, syscall.EADDRINUSE) && tries < 100 {
                ipv4.Close()