From ec3098ef6b2cf8c9917d0fa585809bd335c49ac6 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 29 Sep 2020 14:06:45 +0300 Subject: [PATCH] Updated setSTerminator channel handling --- sessions/sessions.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sessions/sessions.go b/sessions/sessions.go index b77efb7e6..9f778cadc 100644 --- a/sessions/sessions.go +++ b/sessions/sessions.go @@ -319,21 +319,21 @@ func (sS *SessionS) setSTerminator(s *Session, opts engine.MapEvent) { } // schedule automatic termination - go func() { + go func(endChan chan struct{}, timer *time.Timer) { select { - case <-s.sTerminator.timer.C: + case <-timer.C: + s.Lock() lastUsage := s.sTerminator.ttl if s.sTerminator.ttlLastUsage != nil { lastUsage = *s.sTerminator.ttlLastUsage } - s.Lock() sS.forceSTerminate(s, lastUsage, s.sTerminator.ttlUsage, s.sTerminator.ttlLastUsed) s.Unlock() - case <-s.sTerminator.endChan: - s.sTerminator.timer.Stop() + case <-endChan: + timer.Stop() } - }() + }(s.sTerminator.endChan, s.sTerminator.timer) runtime.Gosched() // force context switching }