3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-12-22 18:52:41 +01:00

unconditionally destroy the client on unregister

This avoids conditions where two sessions can be attached to the same client
while not logged into an account.
This commit is contained in:
Shivaram Lingamneni 2020-05-18 05:28:48 -04:00
parent df2dfb7270
commit bced409e78
2 changed files with 5 additions and 9 deletions

View File

@ -1305,14 +1305,10 @@ func (am *AccountManager) Unregister(account string, erase bool) error {
delete(am.skeletonToAccount, additionalSkel)
}
for _, client := range clients {
if config.Accounts.RequireSasl.Enabled {
client.Logout()
client.Quit(client.t("You are no longer authorized to be on this server"), nil)
// destroy acquires a semaphore so we can't call it while holding a lock
go client.destroy(nil)
} else {
am.logoutOfAccount(client)
}
client.Logout()
client.Quit(client.t("You are no longer authorized to be on this server"), nil)
// destroy acquires a semaphore so we can't call it while holding a lock
go client.destroy(nil)
}
if err != nil && !erase {

View File

@ -17,7 +17,7 @@ import (
var (
restrictedNicknames = []string{
"=scene=", // used for rp commands
"=scene=", // used for rp commands
}
restrictedCasefoldedNicks = make(map[string]bool)