TUN-8275: Skip write timeout log on "no network activity"

## Summary
To avoid having to verbose logs we need to only log when an
actual issue occurred. Therefore, we will be skipping any error
logging if the write timeout is caused by no network activity
which just means that nothing is being sent through the stream.
This commit is contained in:
João "Pisco" Fernandes 2024-03-05 15:07:59 +00:00
parent a36fa07aba
commit 4f7165530c
1 changed files with 7 additions and 1 deletions

View File

@ -11,6 +11,9 @@ import (
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
) )
// The error that is throw by the writer when there is `no network activity`.
var idleTimeoutError = quic.IdleTimeoutError{}
type SafeStreamCloser struct { type SafeStreamCloser struct {
lock sync.Mutex lock sync.Mutex
stream quic.Stream stream quic.Stream
@ -52,7 +55,10 @@ func (s *SafeStreamCloser) handleTimeout(err error) {
var netErr net.Error var netErr net.Error
if errors.As(err, &netErr) { if errors.As(err, &netErr) {
if netErr.Timeout() { if netErr.Timeout() {
// We don't need to log if what cause the timeout was `no network activity`.
if !errors.Is(netErr, &idleTimeoutError) {
s.log.Error().Err(netErr).Msg("Closing quic stream due to timeout while writing") s.log.Error().Err(netErr).Msg("Closing quic stream due to timeout while writing")
}
s.stream.CancelWrite(0) s.stream.CancelWrite(0)
} }
} }