|
@@ -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
|