Преглед изворни кода

Open the client's local listener first.

David Fifield пре 6 година
родитељ
комит
3254c1c81e
1 измењених фајлова са 6 додато и 5 уклоњено
  1. 6 5
      dnstt-client/main.go

+ 6 - 5
dnstt-client/main.go

@@ -121,6 +121,12 @@ func handle(local *net.TCPConn, sess *smux.Session, conv uint32) error {
 func run(pubkey []byte, domain dns.Name, localAddr *net.TCPAddr, remoteAddr net.Addr, pconn net.PacketConn) error {
 	defer pconn.Close()
 
+	ln, err := net.ListenTCP("tcp", localAddr)
+	if err != nil {
+		return fmt.Errorf("opening local listener: %v", err)
+	}
+	defer ln.Close()
+
 	mtu := dnsNameCapacity(domain) - 8 - 1 - numPadding - 1 // clientid + padding length prefix + padding + data length prefix
 	if mtu < 80 {
 		return fmt.Errorf("domain %s leaves only %d bytes for payload", domain, mtu)
@@ -167,11 +173,6 @@ func run(pubkey []byte, domain dns.Name, localAddr *net.TCPAddr, remoteAddr net.
 	}
 	defer sess.Close()
 
-	ln, err := net.ListenTCP("tcp", localAddr)
-	if err != nil {
-		return fmt.Errorf("opening local listener: %v", err)
-	}
-
 	for {
 		local, err := ln.Accept()
 		if err != nil {