|
@@ -203,7 +203,7 @@ func (client *Client) SetAway(away bool, awayMessage string) (changed bool) {
|
203
|
203
|
|
204
|
204
|
func (client *Client) AlwaysOn() (alwaysOn bool) {
|
205
|
205
|
client.stateMutex.Lock()
|
206
|
|
- alwaysOn = client.alwaysOn
|
|
206
|
+ alwaysOn = client.registered && client.alwaysOn
|
207
|
207
|
client.stateMutex.Unlock()
|
208
|
208
|
return
|
209
|
209
|
}
|
|
@@ -290,11 +290,8 @@ func (client *Client) Login(account ClientAccount) {
|
290
|
290
|
client.account = account.NameCasefolded
|
291
|
291
|
client.accountName = account.Name
|
292
|
292
|
client.accountSettings = account.Settings
|
293
|
|
- // check `registered` to avoid incorrectly marking a temporary (pre-reattach),
|
294
|
|
- // SASL'ing client as always-on
|
295
|
|
- if client.registered {
|
296
|
|
- client.alwaysOn = alwaysOn
|
297
|
|
- }
|
|
293
|
+ // mark always-on here: it will not be respected until the client is registered
|
|
294
|
+ client.alwaysOn = alwaysOn
|
298
|
295
|
client.accountRegDate = account.RegisteredAt
|
299
|
296
|
return
|
300
|
297
|
}
|
|
@@ -375,7 +372,7 @@ func (client *Client) SetMode(mode modes.Mode, on bool) bool {
|
375
|
372
|
func (client *Client) SetRealname(realname string) {
|
376
|
373
|
client.stateMutex.Lock()
|
377
|
374
|
client.realname = realname
|
378
|
|
- alwaysOn := client.alwaysOn
|
|
375
|
+ alwaysOn := client.registered && client.alwaysOn
|
379
|
376
|
client.stateMutex.Unlock()
|
380
|
377
|
if alwaysOn {
|
381
|
378
|
client.markDirty(IncludeRealname)
|