From f21f57f09fca369fc9a9274946969051c9516462 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sun, 4 Oct 2020 13:55:09 +0300 Subject: [PATCH] Fix delete-session not deleting all cached state --- commands.go | 1 + user.go | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/commands.go b/commands.go index 8b2628e..5d7cb00 100644 --- a/commands.go +++ b/commands.go @@ -458,6 +458,7 @@ func (handler *CommandHandler) CommandDeleteSession(ce *CommandEvent) { ce.Reply("Nothing to purge: no session information stored and no active connection.") return } + ce.User.removeFromJIDMap() ce.User.SetSession(nil) if ce.User.Conn != nil { _, _ = ce.User.Conn.Disconnect() diff --git a/user.go b/user.go index 7fd169a..487b451 100644 --- a/user.go +++ b/user.go @@ -107,7 +107,10 @@ func (user *User) addToJIDMap() { func (user *User) removeFromJIDMap() { user.bridge.usersLock.Lock() - delete(user.bridge.usersByJID, user.JID) + jidUser, ok := user.bridge.usersByJID[user.JID] + if ok && user == jidUser { + delete(user.bridge.usersByJID, user.JID) + } user.bridge.usersLock.Unlock() user.bridge.Metrics.TrackLoginState(user.JID, false) }