| skipped 120 lines |
121 | 121 | | func run(pubkey []byte, domain dns.Name, localAddr *net.TCPAddr, remoteAddr net.Addr, pconn net.PacketConn) error { |
122 | 122 | | defer pconn.Close() |
123 | 123 | | |
| 124 | + | ln, err := net.ListenTCP("tcp", localAddr) |
| 125 | + | if err != nil { |
| 126 | + | return fmt.Errorf("opening local listener: %v", err) |
| 127 | + | } |
| 128 | + | defer ln.Close() |
| 129 | + | |
124 | 130 | | mtu := dnsNameCapacity(domain) - 8 - 1 - numPadding - 1 // clientid + padding length prefix + padding + data length prefix |
125 | 131 | | if mtu < 80 { |
126 | 132 | | return fmt.Errorf("domain %s leaves only %d bytes for payload", domain, mtu) |
| skipped 39 lines |
166 | 172 | | return fmt.Errorf("opening smux session: %v", err) |
167 | 173 | | } |
168 | 174 | | defer sess.Close() |
169 | | - | |
170 | | - | ln, err := net.ListenTCP("tcp", localAddr) |
171 | | - | if err != nil { |
172 | | - | return fmt.Errorf("opening local listener: %v", err) |
173 | | - | } |
174 | 175 | | |
175 | 176 | | for { |
176 | 177 | | local, err := ln.Accept() |
| skipped 138 lines |