1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2024-11-22 14:22:05 +01:00

OMEMO: properly handle item-not-found in refreshRepublishDeviceList.

Fixes SMACK-830
This commit is contained in:
Paul Schaub 2018-09-02 16:23:42 +02:00
parent 9839ff034c
commit d50bb1df1d
Signed by: vanitasvitae
GPG key ID: 62BEE9264BF17311

View file

@ -46,6 +46,7 @@ import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Stanza; import org.jivesoftware.smack.packet.Stanza;
import org.jivesoftware.smack.packet.StanzaError;
import org.jivesoftware.smackx.carbons.packet.CarbonExtension; import org.jivesoftware.smackx.carbons.packet.CarbonExtension;
import org.jivesoftware.smackx.mam.MamManager; import org.jivesoftware.smackx.mam.MamManager;
import org.jivesoftware.smackx.muc.MultiUserChat; import org.jivesoftware.smackx.muc.MultiUserChat;
@ -656,10 +657,20 @@ public abstract class OmemoService<T_IdKeyPair, T_IdKey, T_PreKey, T_SigPreKey,
// refreshOmemoDeviceList; // refreshOmemoDeviceList;
OmemoDeviceListElement publishedList; OmemoDeviceListElement publishedList;
try { try {
publishedList = fetchDeviceList(connection, userDevice.getJid()); publishedList = fetchDeviceList(connection, userDevice.getJid());
} catch (PubSubException.NotAPubSubNodeException e) { } catch (PubSubException.NotAPubSubNodeException e) {
// Node is not a PubSub node. This might happen on some ejabberd servers.
publishedList = null; publishedList = null;
} catch (XMPPException.XMPPErrorException e) {
if (e.getStanzaError().getCondition() == StanzaError.Condition.item_not_found) {
// Items not found -> items do not exist
publishedList = null;
} else {
// Some other error -> throw
throw e;
}
} }
if (publishedList == null) { if (publishedList == null) {
publishedList = new OmemoDeviceListElement_VAxolotl(Collections.<Integer>emptySet()); publishedList = new OmemoDeviceListElement_VAxolotl(Collections.<Integer>emptySet());