Browse Source

fix #1252

tags/v2.3.0-rc2
Shivaram Lingamneni 3 years ago
parent
commit
01726f8935
1 changed files with 5 additions and 4 deletions
  1. 5
    4
      irc/client_lookup_set.go

+ 5
- 4
irc/client_lookup_set.go View File

@@ -48,9 +48,8 @@ func (clients *ClientManager) Get(nick string) *Client {
48 48
 	return nil
49 49
 }
50 50
 
51
-func (clients *ClientManager) removeInternal(client *Client) (err error) {
51
+func (clients *ClientManager) removeInternal(client *Client, oldcfnick, oldskeleton string) (err error) {
52 52
 	// requires holding the writable Lock()
53
-	oldcfnick, oldskeleton := client.uniqueIdentifiers()
54 53
 	if oldcfnick == "*" || oldcfnick == "" {
55 54
 		return errNickMissing
56 55
 	}
@@ -88,7 +87,8 @@ func (clients *ClientManager) Remove(client *Client) error {
88 87
 	clients.Lock()
89 88
 	defer clients.Unlock()
90 89
 
91
-	return clients.removeInternal(client)
90
+	oldcfnick, oldskeleton := client.uniqueIdentifiers()
91
+	return clients.removeInternal(client, oldcfnick, oldskeleton)
92 92
 }
93 93
 
94 94
 // Handles a RESUME by attaching a session to a designated client. It is the
@@ -240,10 +240,11 @@ func (clients *ClientManager) SetNick(client *Client, session *Session, newNick
240 240
 		return "", errNicknameInUse, false
241 241
 	}
242 242
 
243
+	formercfnick, formerskeleton := client.uniqueIdentifiers()
243 244
 	if changeSuccess := client.SetNick(newNick, newCfNick, newSkeleton); !changeSuccess {
244 245
 		return "", errClientDestroyed, false
245 246
 	}
246
-	clients.removeInternal(client)
247
+	clients.removeInternal(client, formercfnick, formerskeleton)
247 248
 	clients.byNick[newCfNick] = client
248 249
 	clients.bySkeleton[newSkeleton] = client
249 250
 	return newNick, nil, false

Loading…
Cancel
Save