From a3bd21d329b25fe303863e1c031f33861e3b70c8 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 27 Mar 2026 23:53:51 +0300 Subject: [PATCH] Fix errcheck failures for connection deadlines Handle SetDeadline, SetReadDeadline, and SetWriteDeadline errors in client and server proxy loops to satisfy golangci-lint errcheck in CI. --- client/main.go | 36 +++++++++++++++++++++++++++--------- server/main.go | 28 ++++++++++++++++++++++------ 2 files changed, 49 insertions(+), 15 deletions(-) diff --git a/client/main.go b/client/main.go index 3a1d8c5..2d453db 100644 --- a/client/main.go +++ b/client/main.go @@ -367,7 +367,9 @@ func getYandexCreds(link string) (string, string, string, error) { return "", "", "", fmt.Errorf("ws write: %w", err) } - conn.SetReadDeadline(time.Now().Add(15 * time.Second)) + if err := conn.SetReadDeadline(time.Now().Add(15 * time.Second)); err != nil { + return "", "", "", fmt.Errorf("ws set read deadline: %w", err) + } for { _, msg, err := conn.ReadMessage() @@ -475,8 +477,12 @@ func oneDtlsConnection(ctx context.Context, peer *net.UDPAddr, listenConn net.Pa wg := sync.WaitGroup{} wg.Add(2) context.AfterFunc(dtlsctx, func() { - listenConn.SetDeadline(time.Now()) - dtlsConn.SetDeadline(time.Now()) + if err := listenConn.SetDeadline(time.Now()); err != nil { + log.Printf("Failed to set listener deadline: %s", err) + } + if err := dtlsConn.SetDeadline(time.Now()); err != nil { + log.Printf("Failed to set DTLS deadline: %s", err) + } }) var addr atomic.Value // Start read-loop on listenConn @@ -537,8 +543,12 @@ func oneDtlsConnection(ctx context.Context, peer *net.UDPAddr, listenConn net.Pa }() wg.Wait() - listenConn.SetDeadline(time.Time{}) - dtlsConn.SetDeadline(time.Time{}) + if err := listenConn.SetDeadline(time.Time{}); err != nil { + log.Printf("Failed to clear listener deadline: %s", err) + } + if err := dtlsConn.SetDeadline(time.Time{}); err != nil { + log.Printf("Failed to clear DTLS deadline: %s", err) + } } type connectedUDPConn struct { @@ -672,8 +682,12 @@ func oneTurnConnection(ctx context.Context, turnParams *turnParams, peer *net.UD wg.Add(2) turnctx, turncancel := context.WithCancel(context.Background()) context.AfterFunc(turnctx, func() { - relayConn.SetDeadline(time.Now()) - conn2.SetDeadline(time.Now()) + if err := relayConn.SetDeadline(time.Now()); err != nil { + log.Printf("Failed to set relay deadline: %s", err) + } + if err := conn2.SetDeadline(time.Now()); err != nil { + log.Printf("Failed to set upstream deadline: %s", err) + } }) var addr atomic.Value // Start read-loop on conn2 (output of DTLS) @@ -734,8 +748,12 @@ func oneTurnConnection(ctx context.Context, turnParams *turnParams, peer *net.UD }() wg.Wait() - relayConn.SetDeadline(time.Time{}) - conn2.SetDeadline(time.Time{}) + if err := relayConn.SetDeadline(time.Time{}); err != nil { + log.Printf("Failed to clear relay deadline: %s", err) + } + if err := conn2.SetDeadline(time.Time{}); err != nil { + log.Printf("Failed to clear upstream deadline: %s", err) + } } func oneDtlsConnectionLoop(ctx context.Context, peer *net.UDPAddr, listenConnChan <-chan net.PacketConn, connchan chan<- net.PacketConn, okchan chan<- struct{}) { diff --git a/server/main.go b/server/main.go index 0136b39..87ee9d6 100644 --- a/server/main.go +++ b/server/main.go @@ -129,8 +129,12 @@ func main() { wg.Add(2) ctx2, cancel2 := context.WithCancel(ctx) context.AfterFunc(ctx2, func() { - conn.SetDeadline(time.Now()) - serverConn.SetDeadline(time.Now()) + if err := conn.SetDeadline(time.Now()); err != nil { + log.Printf("failed to set incoming deadline: %s", err) + } + if err := serverConn.SetDeadline(time.Now()); err != nil { + log.Printf("failed to set outgoing deadline: %s", err) + } }) go func() { defer wg.Done() @@ -142,14 +146,20 @@ func main() { return default: } - conn.SetReadDeadline(time.Now().Add(time.Minute * 30)) + if err1 := conn.SetReadDeadline(time.Now().Add(time.Minute * 30)); err1 != nil { + log.Printf("Failed: %s", err1) + return + } n, err1 := conn.Read(buf) if err1 != nil { log.Printf("Failed: %s", err1) return } - serverConn.SetWriteDeadline(time.Now().Add(time.Minute * 30)) + if err1 := serverConn.SetWriteDeadline(time.Now().Add(time.Minute * 30)); err1 != nil { + log.Printf("Failed: %s", err1) + return + } _, err1 = serverConn.Write(buf[:n]) if err1 != nil { log.Printf("Failed: %s", err1) @@ -167,14 +177,20 @@ func main() { return default: } - serverConn.SetReadDeadline(time.Now().Add(time.Minute * 30)) + if err1 := serverConn.SetReadDeadline(time.Now().Add(time.Minute * 30)); err1 != nil { + log.Printf("Failed: %s", err1) + return + } n, err1 := serverConn.Read(buf) if err1 != nil { log.Printf("Failed: %s", err1) return } - conn.SetWriteDeadline(time.Now().Add(time.Minute * 30)) + if err1 := conn.SetWriteDeadline(time.Now().Add(time.Minute * 30)); err1 != nil { + log.Printf("Failed: %s", err1) + return + } _, err1 = conn.Write(buf[:n]) if err1 != nil { log.Printf("Failed: %s", err1)