From 77184c162565884adef9d479ca3cdf717b183b2b Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Sun, 12 Jul 2020 16:31:51 -0400 Subject: [PATCH] restore transition mechanism --- irc/client_lookup_set.go | 5 +++++ irc/getters.go | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/irc/client_lookup_set.go b/irc/client_lookup_set.go index 59d235ae..45737b90 100644 --- a/irc/client_lookup_set.go +++ b/irc/client_lookup_set.go @@ -122,6 +122,7 @@ func (clients *ClientManager) SetNick(client *Client, session *Session, newNick accountName := client.accountName settings := client.accountSettings registered := client.registered + realname := client.realname client.stateMutex.RUnlock() // recompute always-on status, because client.alwaysOn is not set for unregistered clients @@ -224,6 +225,10 @@ func (clients *ClientManager) SetNick(client *Client, session *Session, newNick client.server.stats.AddRegistered(invisible, operator) } session.autoreplayMissedSince = lastSeen + // TODO: transition mechanism for #1065, clean this up eventually: + if currentClient.Realname() == "" { + currentClient.SetRealname(realname) + } // successful reattach! return newNick, nil, back } else if currentClient == client && currentClient.Nick() == newNick { diff --git a/irc/getters.go b/irc/getters.go index c40af649..bbffbd0d 100644 --- a/irc/getters.go +++ b/irc/getters.go @@ -430,6 +430,13 @@ func (client *Client) UpdateActive(session *Session) { session.lastActive = now } +func (client *Client) Realname() string { + client.stateMutex.RLock() + result := client.realname + client.stateMutex.RUnlock() + return result +} + func (channel *Channel) Name() string { channel.stateMutex.RLock() defer channel.stateMutex.RUnlock()