catch state changing error when sending timeout to iq callbacks

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java | 10 +++-
1 file changed, 7 insertions(+), 3 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java 🔗

@@ -1086,7 +1086,12 @@ public class XmppConnection implements Runnable {
 			}
 		}
 		for(OnIqPacketReceived callback : callbacks) {
-			callback.onIqPacketReceived(account,failurePacket);
+			try {
+				callback.onIqPacketReceived(account, failurePacket);
+			} catch (StateChangingError error) {
+				Log.d(Config.LOGTAG,account.getJid().toBareJid()+": caught StateChangingError("+error.state.toString()+") while clearing callbacks");
+				//ignore
+			}
 		}
 		Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": done clearing iq callbacks. " + this.packetCallbacks.size() + " left");
 	}
@@ -1322,8 +1327,7 @@ public class XmppConnection implements Runnable {
 
 	public synchronized String sendUnmodifiedIqPacket(final IqPacket packet, final OnIqPacketReceived callback) {
 		if (packet.getId() == null) {
-			final String id = nextRandomId();
-			packet.setAttribute("id", id);
+			packet.setAttribute("id", nextRandomId());
 		}
 		if (callback != null) {
 			synchronized (this.packetCallbacks) {