From 65885443689e3bb0d0ecda3a3394bf0e54c015b4 Mon Sep 17 00:00:00 2001 From: samosvalishe Date: Thu, 21 May 2026 00:43:42 +0300 Subject: [PATCH] =?UTF-8?q?fix(udprelay):=20=D0=B8=D0=BD=D0=BA=D1=80=D0=B5?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=82=20ConnectedStreams=20=D0=B4=D0=BE=20Re?= =?UTF-8?q?setErrors?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Конкурентные вызыватели HandleAuthError могли видеть устаревшие счётчики ошибок, очищенные до того, как стрим стал виден в connected-счётчике. Переупорядочено так, что снимок stream-alive идёт первым. --- internal/proxy/udprelay/udprelay.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/proxy/udprelay/udprelay.go b/internal/proxy/udprelay/udprelay.go index a18c88c..77c1e1b 100644 --- a/internal/proxy/udprelay/udprelay.go +++ b/internal/proxy/udprelay/udprelay.go @@ -401,9 +401,11 @@ func oneTURN(ctx context.Context, deps *Deps, params *Params, peer *net.UDPAddr, relayConn := stream.Relay deps.log().Debugf("[STREAM %d] TURN server IP: %s", streamID, stream.ServerUDPAddr.IP) + // Increment before ResetErrors so concurrent HandleAuthError observers see + // the stream as connected before its error counter clears. + deps.ConnectedStreams.Add(1) deps.Auth.ResetErrors(streamID) - deps.ConnectedStreams.Add(1) defer func() { deps.ConnectedStreams.Add(-1) if cerr := stream.Close(); cerr != nil {