diff --git a/serverconn.go b/serverconn.go index b7d48252..caa0ea93 100644 --- a/serverconn.go +++ b/serverconn.go @@ -127,14 +127,7 @@ func (sc *ServerConn) run() { return err case ss := <-sc.sessionRemove: - if _, ok := sc.sessions[ss.secretID]; ok { - delete(sc.sessions, ss.secretID) - - select { - case ss.connRemove <- sc: - case <-ss.ctx.Done(): - } - } + delete(sc.sessions, ss.secretID) case <-sc.ctx.Done(): return liberrors.ErrServerTerminated{} diff --git a/serversession.go b/serversession.go index 81e16b71..7de0b8c9 100644 --- a/serversession.go +++ b/serversession.go @@ -304,20 +304,13 @@ func (ss *ServerSession) run() { } case sc := <-ss.connRemove: - if _, ok := ss.conns[sc]; ok { - delete(ss.conns, sc) - - select { - case sc.sessionRemove <- ss: - case <-sc.ctx.Done(): - } - } + delete(ss.conns, sc) // if session is not in state RECORD or PLAY, or transport is TCP if (ss.state != ServerSessionStateRecord && ss.state != ServerSessionStatePlay) || *ss.setuppedTransport == TransportTCP { - // close if there are no associated connections + // close session if there are no associated connections if len(ss.conns) == 0 { return liberrors.ErrServerSessionNotInUse{} }