[client] Fix udp forwarder deadline (#3364)

This commit is contained in:
Viktor Liu 2025-02-21 18:51:52 +01:00 committed by GitHub
parent b307298b2f
commit a74208abac
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -245,18 +245,15 @@ func (c *udpPacketConn) copy(ctx context.Context, dst net.Conn, src net.Conn, bu
defer bufPool.Put(bufp) defer bufPool.Put(bufp)
buffer := *bufp buffer := *bufp
if err := src.SetReadDeadline(time.Now().Add(udpTimeout)); err != nil { for {
return fmt.Errorf("set read deadline: %w", err) if ctx.Err() != nil {
} return ctx.Err()
if err := src.SetWriteDeadline(time.Now().Add(udpTimeout)); err != nil { }
return fmt.Errorf("set write deadline: %w", err)
if err := src.SetDeadline(time.Now().Add(udpTimeout)); err != nil {
return fmt.Errorf("set read deadline: %w", err)
} }
for {
select {
case <-ctx.Done():
return ctx.Err()
default:
n, err := src.Read(buffer) n, err := src.Read(buffer)
if err != nil { if err != nil {
if isTimeout(err) { if isTimeout(err) {
@ -272,7 +269,6 @@ func (c *udpPacketConn) copy(ctx context.Context, dst net.Conn, src net.Conn, bu
c.updateLastSeen() c.updateLastSeen()
} }
}
} }
func isClosedError(err error) bool { func isClosedError(err error) bool {