From 470756cd3e05ac2a3d86353c21f537276c5ca1a3 Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Mon, 27 Jul 2020 06:08:06 -0400 Subject: [PATCH] fix an edge case with `/NS SASET user always-on true` If force-nick-equals-account is disabled, then this could cause a client with a non-reserved (or grouped) nick to become always-on. (This can't happen with `/NS SET always-on true` because we check in advance.) --- irc/getters.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/irc/getters.go b/irc/getters.go index af83790a..dd619a32 100644 --- a/irc/getters.go +++ b/irc/getters.go @@ -330,6 +330,8 @@ func (client *Client) SetAccountSettings(settings AccountSettings) { alwaysOn := persistenceEnabled(client.server.Config().Accounts.Multiclient.AlwaysOn, settings.AlwaysOn) client.stateMutex.Lock() if client.registered { + // only allow the client to become always-on if their nick equals their account name + alwaysOn = alwaysOn && client.nick == client.accountName autoreplayMissedDisabled = (client.accountSettings.AutoreplayMissed && !settings.AutoreplayMissed) becameAlwaysOn = (!client.alwaysOn && alwaysOn) client.alwaysOn = alwaysOn