From dddf62763e3bc6e07c8c0b75c781151494967bf9 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Sat, 10 Mar 2018 10:43:44 +0100 Subject: [PATCH] Also store unavailable presences in the map for non-Roster presences Fixes SMACK-808. --- .../src/main/java/org/jivesoftware/smack/roster/Roster.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/smack-im/src/main/java/org/jivesoftware/smack/roster/Roster.java b/smack-im/src/main/java/org/jivesoftware/smack/roster/Roster.java index 94ab78210..05639fab8 100644 --- a/smack-im/src/main/java/org/jivesoftware/smack/roster/Roster.java +++ b/smack-im/src/main/java/org/jivesoftware/smack/roster/Roster.java @@ -1504,14 +1504,13 @@ public final class Roster extends Manager { case unavailable: // If no resource, this is likely an offline presence as part of // a roster presence flood. In that case, we store it. + userPresences = getOrCreatePresencesInternal(key); if (from.hasNoResource()) { // Get the user presence map - userPresences = getOrCreatePresencesInternal(key); userPresences.put(Resourcepart.EMPTY, presence); } // Otherwise, this is a normal offline presence. - else if (presenceMap.get(key) != null) { - userPresences = presenceMap.get(key); + else { // Store the offline presence, as it may include extra information // such as the user being on vacation. userPresences.put(fromResource, presence);