TUN-6829: Allow user of datagramsession to control logging level of errors

This commit is contained in:
cthuang 2022-10-11 16:48:36 +01:00 committed by Chung-Ting Huang
parent 4642316167
commit 40ea6a5080
1 changed files with 12 additions and 1 deletions

View File

@ -24,6 +24,13 @@ func SessionIdleErr(timeout time.Duration) error {
type transportSender func(session *packet.Session) error type transportSender func(session *packet.Session) error
// ErrVithVariableSeverity are errors that have variable severity
type ErrVithVariableSeverity interface {
error
// LogLevel return the severity of this error
LogLevel() zerolog.Level
}
// Session is a bidirectional pipe of datagrams between transport and dstConn // Session is a bidirectional pipe of datagrams between transport and dstConn
// Destination can be a connection with origin or with eyeball // Destination can be a connection with origin or with eyeball
// When the destination is origin: // When the destination is origin:
@ -53,7 +60,11 @@ func (s *Session) Serve(ctx context.Context, closeAfterIdle time.Duration) (clos
if errors.Is(err, net.ErrClosed) { if errors.Is(err, net.ErrClosed) {
s.log.Debug().Msg("Destination connection closed") s.log.Debug().Msg("Destination connection closed")
} else { } else {
s.log.Error().Err(err).Msg("Failed to send session payload from destination to transport") level := zerolog.ErrorLevel
if variableErr, ok := err.(ErrVithVariableSeverity); ok {
level = variableErr.LogLevel()
}
s.log.WithLevel(level).Err(err).Msg("Failed to send session payload from destination to transport")
} }
if closeSession { if closeSession {
s.closeChan <- err s.closeChan <- err