From 2836ac669cdf1d8f9ea5e6bb806d02b26091ae15 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch <daniel@gultsch.de> Date: Fri, 18 Dec 2020 21:18:09 +0100 Subject: [PATCH] catch exception while destroying rooms --- .../services/XmppConnectionService.java | 35 ++++++++++--------- .../ui/ConversationsActivity.java | 10 ++++-- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index a2bd8107b..b4b7d7c20 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -3639,26 +3639,29 @@ public class XmppConnectionService extends Service { } public void destroyRoom(final Conversation conversation, final OnRoomDestroy callback) { - IqPacket request = new IqPacket(IqPacket.TYPE.SET); - request.setTo(conversation.getJid().asBareJid()); - request.query("http://jabber.org/protocol/muc#owner").addChild("destroy"); - sendIqPacket(conversation.getAccount(), request, new OnIqPacketReceived() { - @Override - public void onIqPacketReceived(Account account, IqPacket packet) { - if (packet.getType() == IqPacket.TYPE.RESULT) { - if (callback != null) { - callback.onRoomDestroySucceeded(); - } - } else if (packet.getType() == IqPacket.TYPE.ERROR) { - if (callback != null) { - callback.onRoomDestroyFailed(); + try { + IqPacket request = new IqPacket(IqPacket.TYPE.SET); + request.setTo(conversation.getJid().asBareJid()); + request.query("http://jabber.org/protocol/muc#owner").addChild("destroy"); + sendIqPacket(conversation.getAccount(), request, new OnIqPacketReceived() { + @Override + public void onIqPacketReceived(Account account, IqPacket packet) { + if (packet.getType() == IqPacket.TYPE.RESULT) { + if (callback != null) { + callback.onRoomDestroySucceeded(); + } + } else if (packet.getType() == IqPacket.TYPE.ERROR) { + if (callback != null) { + callback.onRoomDestroyFailed(); + } } } - } - }); + }); + } catch (Exception e) { + e.printStackTrace(); + } } - private void disconnect(Account account, boolean force) { if ((account.getStatus() == Account.State.ONLINE) || (account.getStatus() == Account.State.DISABLED)) { diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java index 8981eb488..c0ee76a4e 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java @@ -648,9 +648,13 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio if (extras != null && extras.containsKey("MUC_UUID")) { Log.d(Config.LOGTAG, "Get " + intent.getAction() + " intent for " + extras.getString("MUC_UUID")); Conversation conversation = xmppConnectionService.findConversationByUuid(extras.getString("MUC_UUID")); - ConversationsActivity.this.xmppConnectionService.clearConversationHistory(conversation); - xmppConnectionService.destroyRoom(conversation, ConversationsActivity.this); - endConversation(conversation); + try { + ConversationsActivity.this.xmppConnectionService.clearConversationHistory(conversation); + xmppConnectionService.destroyRoom(conversation, ConversationsActivity.this); + endConversation(conversation); + } catch (Exception e) { + e.printStackTrace(); + } } } setIntent(createLauncherIntent(this));