Skip to content

Commit 4616f8f

Browse files
fixed error handling for dns connections
1 parent 25e227c commit 4616f8f

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

tproxy_udp_linux.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,14 @@ func newUDPConn(srcAddr *net.UDPAddr, dstAddr *net.UDPAddr, sockDialer *socks5.D
6262
if !ok {
6363
return nil, fmt.Errorf("failed obtaining relay connection")
6464
}
65-
return &udpConn{UDPConn: relayConn, srcAddr: srcAddr, dstAddr: dstAddr, lastSeen: time.Now()}, nil
65+
return &udpConn{
66+
UDPConn: relayConn,
67+
srcAddr: srcAddr,
68+
dstAddr: dstAddr,
69+
lastSeen: time.Now(),
70+
reqChan: make(chan layers.Layer),
71+
respChan: make(chan layers.Layer),
72+
}, nil
6673
}
6774

6875
type udpConnections struct {
@@ -585,7 +592,12 @@ func (tsu *tproxyServerUDP) handleDNSConnection(conn *dnsConn) {
585592
}
586593
conn.written.Add(uint64(nw))
587594
if ew != nil {
588-
return
595+
if errors.Is(ew, net.ErrClosed) {
596+
return
597+
}
598+
if ne, ok := ew.(net.Error); ok && ne.Timeout() {
599+
return
600+
}
589601
}
590602
if nr != nw {
591603
tsu.p.logger.Debug().

0 commit comments

Comments
 (0)