Lower udp timeout and add teardown messages

This commit is contained in:
Viktor Liu 2024-12-31 15:54:45 +01:00
parent fb1a10755a
commit 509b4e2132
2 changed files with 8 additions and 3 deletions

View File

@ -7,6 +7,7 @@ import (
"net" "net"
"gvisor.dev/gvisor/pkg/tcpip/adapters/gonet" "gvisor.dev/gvisor/pkg/tcpip/adapters/gonet"
"gvisor.dev/gvisor/pkg/tcpip/stack"
"gvisor.dev/gvisor/pkg/tcpip/transport/tcp" "gvisor.dev/gvisor/pkg/tcpip/transport/tcp"
"gvisor.dev/gvisor/pkg/waiter" "gvisor.dev/gvisor/pkg/waiter"
) )
@ -45,10 +46,10 @@ func (f *Forwarder) handleTCP(r *tcp.ForwarderRequest) {
f.logger.Trace("forwarder: established TCP connection to %v", id) f.logger.Trace("forwarder: established TCP connection to %v", id)
go f.proxyTCP(inConn, outConn) go f.proxyTCP(id, inConn, outConn)
} }
func (f *Forwarder) proxyTCP(inConn *gonet.TCPConn, outConn net.Conn) { func (f *Forwarder) proxyTCP(id stack.TransportEndpointID, inConn *gonet.TCPConn, outConn net.Conn) {
defer func() { defer func() {
if err := inConn.Close(); err != nil { if err := inConn.Close(); err != nil {
f.logger.Error("forwarder: inConn close error: %v", err) f.logger.Error("forwarder: inConn close error: %v", err)
@ -82,11 +83,13 @@ func (f *Forwarder) proxyTCP(inConn *gonet.TCPConn, outConn net.Conn) {
select { select {
case <-ctx.Done(): case <-ctx.Done():
f.logger.Trace("forwarder: tearing down TCP connection %v due to context done", id)
return return
case err := <-errChan: case err := <-errChan:
if err != nil && !isClosedError(err) { if err != nil && !isClosedError(err) {
f.logger.Error("proxyTCP: copy error: %v", err) f.logger.Error("proxyTCP: copy error: %v", err)
} }
f.logger.Trace("forwarder: tearing down TCP connection %v", id)
return return
} }
} }

View File

@ -18,7 +18,7 @@ import (
) )
const ( const (
udpTimeout = 60 * time.Second udpTimeout = 30 * time.Second
maxPacketSize = 65535 maxPacketSize = 65535
) )
@ -213,11 +213,13 @@ func (f *Forwarder) proxyUDP(ctx context.Context, pConn *udpPacketConn, id stack
select { select {
case <-ctx.Done(): case <-ctx.Done():
f.logger.Trace("forwarder: tearing down UDP connection %v due to context done", id)
return return
case err := <-errChan: case err := <-errChan:
if err != nil && !isClosedError(err) { if err != nil && !isClosedError(err) {
f.logger.Error("proxyUDP: copy error: %v", err) f.logger.Error("proxyUDP: copy error: %v", err)
} }
f.logger.Trace("forwarder: tearing down UDP connection %v", id)
return return
} }
} }