Skip to content

Commit fc57493

Browse files
committed
TUN-6691: Properly error check for net.ErrClosed
UDP session would check if the socket was closed before returning but the net.ErrClosed could be wrapped in another error.
1 parent 59f5b0d commit fc57493

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

datagramsession/session.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package datagramsession
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"io"
78
"net"
@@ -49,10 +50,10 @@ func (s *Session) Serve(ctx context.Context, closeAfterIdle time.Duration) (clos
4950
readBuffer := make([]byte, maxPacketSize)
5051
for {
5152
if closeSession, err := s.dstToTransport(readBuffer); err != nil {
52-
if err != net.ErrClosed {
53-
s.log.Error().Err(err).Msg("Failed to send session payload from destination to transport")
53+
if errors.Is(err, net.ErrClosed) {
54+
s.log.Debug().Msg("Destination connection closed")
5455
} else {
55-
s.log.Debug().Msg("Session cannot read from destination because the connection is closed")
56+
s.log.Error().Err(err).Msg("Failed to send session payload from destination to transport")
5657
}
5758
if closeSession {
5859
s.closeChan <- err

0 commit comments

Comments
 (0)