From c13490ff5514e54dcaf6f44483bd3be8e4802d4e Mon Sep 17 00:00:00 2001 From: samosvalishe Date: Tue, 22 Sep 2026 20:05:02 +0300 Subject: [PATCH] =?UTF-8?q?fix(udp):=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA?= =?UTF-8?q?=D0=B0=20obf=20=D0=B4=D0=BE=20=D0=B0=D0=BB=D0=BB=D0=BE=D0=BA?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D0=B8,=20=D0=B1=D0=B5=D0=B7=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=82=D0=BB=D0=B8=20allocate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/proxy/udprelay/loop.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/internal/proxy/udprelay/loop.go b/internal/proxy/udprelay/loop.go index 20bf597..1334c9d 100644 --- a/internal/proxy/udprelay/loop.go +++ b/internal/proxy/udprelay/loop.go @@ -235,6 +235,12 @@ func oneTURN(ctx context.Context, deps *Deps, params *Params, peer *net.UDPAddr, c <- err }() + // До Allocate: отказ кодека не должен стоить аллокации. + obfConn, obfErr := wire.NewClientCodec(params.Profile, params.ObfKey) + if obfErr != nil { + err = fmt.Errorf("OBF init: %w", obfErr) + return + } stream, derr := params.Dial(ctx, streamID) if derr != nil { if deps.Auth.IsAuthError(derr) { @@ -282,11 +288,6 @@ func oneTURN(ctx context.Context, deps *Deps, params *Params, peer *net.UDPAddr, }) var internalPipeAddr atomic.Value - obfConn, obfErr := wire.NewClientCodec(params.Profile, params.ObfKey) - if obfErr != nil { - deps.log().Errorf("[STREAM %d] OBF init failed: %v", streamID, obfErr) - return - } wg.Go(func() { select {