From 53b8345aa07dd4375ba5646a3f14a309351bb147 Mon Sep 17 00:00:00 2001 From: samosvalishe Date: Tue, 18 Aug 2026 00:07:34 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B2=D0=BE=D0=B7=D0=B2=D1=80=D0=B0?= =?UTF-8?q?=D1=82=20=D1=84=D0=BE=D0=BD=D0=BE=D0=B2=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D0=B4=D0=B5=D1=82=D0=B5=D0=BA=D1=82=D0=BE=D1=80=D0=B0=20=D1=81?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D1=80=D0=B5=D1=86=D0=B8?= =?UTF-8?q?=D0=BA=D0=BB=D0=B0=20=D0=B0=D0=BB=D0=BB=D0=BE=D0=BA=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/session/session.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/internal/session/session.go b/internal/session/session.go index ab204da..6f9d59a 100644 --- a/internal/session/session.go +++ b/internal/session/session.go @@ -19,6 +19,7 @@ import ( "github.com/samosvalishe/free-turn-proxy/internal/routemgr" "github.com/samosvalishe/free-turn-proxy/internal/stats" "github.com/samosvalishe/free-turn-proxy/internal/transport/dtlsdial" + "github.com/samosvalishe/free-turn-proxy/internal/wake" ) // Phase - текущая стадия подключения сессии. @@ -42,6 +43,11 @@ const ( defaultStatusInterval = 500 * time.Millisecond defaultUDPHandshakeTimeout = 20 * time.Second defaultHandshakeConcurrency = 3 + + // Порог вдвое больше тика: сон короче порога всё равно пропускаем, а тик почаще + // стоил бы пробуждений процесса на всё время сессии. + wakeTick = 30 * time.Second + wakeThreshold = 60 * time.Second ) type Options struct { @@ -175,6 +181,13 @@ func (s *Session) Run(ctx context.Context) (err error) { defer cancel() var bg sync.WaitGroup + bg.Go(func() { + wake.New().Watch(runCtx, wakeTick, wakeThreshold, func(gap time.Duration) { + log.Warnf("device slept for %s - recycling TURN allocations", gap.Truncate(time.Second)) + s.Wake() + }) + }) + var watchdogErr error bg.Go(func() { watchdogErr = s.watch(runCtx, cancel)