Bläddra i källkod

fix #1144

tags/v2.2.0-rc1
Shivaram Lingamneni 4 år sedan
förälder
incheckning
17cd831319
2 ändrade filer med 19 tillägg och 3 borttagningar
  1. 18
    2
      irc/client.go
  2. 1
    1
      irc/getters.go

+ 18
- 2
irc/client.go Visa fil

728
 		client.lastActive = now
728
 		client.lastActive = now
729
 		session.lastActive = now
729
 		session.lastActive = now
730
 	}
730
 	}
731
-	if client.accountSettings.AutoreplayMissed {
731
+	if client.accountSettings.AutoreplayMissed || session.deviceID != "" {
732
 		client.setLastSeen(now, session.deviceID)
732
 		client.setLastSeen(now, session.deviceID)
733
 		if now.Sub(client.lastSeenLastWrite) > lastSeenWriteInterval {
733
 		if now.Sub(client.lastSeenLastWrite) > lastSeenWriteInterval {
734
 			markDirty = true
734
 			markDirty = true
1228
 func (client *Client) destroy(session *Session) {
1228
 func (client *Client) destroy(session *Session) {
1229
 	config := client.server.Config()
1229
 	config := client.server.Config()
1230
 	var sessionsToDestroy []*Session
1230
 	var sessionsToDestroy []*Session
1231
+	var saveLastSeen bool
1231
 
1232
 
1232
 	client.stateMutex.Lock()
1233
 	client.stateMutex.Lock()
1234
+
1233
 	details := client.detailsNoMutex()
1235
 	details := client.detailsNoMutex()
1234
 	brbState := client.brbTimer.state
1236
 	brbState := client.brbTimer.state
1235
 	brbAt := client.brbTimer.brbAt
1237
 	brbAt := client.brbTimer.brbAt
1237
 	sessionRemoved := false
1239
 	sessionRemoved := false
1238
 	registered := client.registered
1240
 	registered := client.registered
1239
 	alwaysOn := client.alwaysOn
1241
 	alwaysOn := client.alwaysOn
1240
-	saveLastSeen := alwaysOn && client.accountSettings.AutoreplayMissed
1242
+
1241
 	var remainingSessions int
1243
 	var remainingSessions int
1242
 	if session == nil {
1244
 	if session == nil {
1243
 		sessionsToDestroy = client.sessions
1245
 		sessionsToDestroy = client.sessions
1250
 		}
1252
 		}
1251
 	}
1253
 	}
1252
 
1254
 
1255
+	// save last seen if applicable:
1256
+	if alwaysOn {
1257
+		if client.accountSettings.AutoreplayMissed {
1258
+			saveLastSeen = true
1259
+		} else {
1260
+			for _, session := range sessionsToDestroy {
1261
+				if session.deviceID != "" {
1262
+					saveLastSeen = true
1263
+					break
1264
+				}
1265
+			}
1266
+		}
1267
+	}
1268
+
1253
 	// should we destroy the whole client this time?
1269
 	// should we destroy the whole client this time?
1254
 	// BRB is not respected if this is a destroy of the whole client (i.e., session == nil)
1270
 	// BRB is not respected if this is a destroy of the whole client (i.e., session == nil)
1255
 	brbEligible := session != nil && brbState == BrbEnabled
1271
 	brbEligible := session != nil && brbState == BrbEnabled

+ 1
- 1
irc/getters.go Visa fil

104
 	newSessions := make([]*Session, len(client.sessions)+1)
104
 	newSessions := make([]*Session, len(client.sessions)+1)
105
 	copy(newSessions, client.sessions)
105
 	copy(newSessions, client.sessions)
106
 	newSessions[len(newSessions)-1] = session
106
 	newSessions[len(newSessions)-1] = session
107
-	if client.accountSettings.AutoreplayMissed {
107
+	if client.accountSettings.AutoreplayMissed || session.deviceID != "" {
108
 		lastSeen = client.lastSeen[session.deviceID]
108
 		lastSeen = client.lastSeen[session.deviceID]
109
 	}
109
 	}
110
 	client.sessions = newSessions
110
 	client.sessions = newSessions

Laddar…
Avbryt
Spara