ensure server triggered jingle iq-errors get routed properly

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java              | 4 
src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/JinglePacket.java | 5 
2 files changed, 6 insertions(+), 3 deletions(-)

Detailed changes

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

@@ -710,7 +710,9 @@ public class XmppConnection implements Runnable {
         if (Config.BACKGROUND_STANZA_LOGGING && mXmppConnectionService.checkListeners()) {
             Log.d(Config.LOGTAG, "[background stanza] " + element);
         }
-        if (element instanceof IqPacket && element.hasChild("jingle", Namespace.JINGLE)) {
+        if (element instanceof IqPacket
+                && (((IqPacket) element).getType() == IqPacket.TYPE.SET)
+                && element.hasChild("jingle", Namespace.JINGLE)) {
             return JinglePacket.upgrade((IqPacket) element);
         } else {
             return element;

src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/JinglePacket.java 🔗

@@ -29,6 +29,7 @@ public class JinglePacket extends IqPacket {
 
     public static JinglePacket upgrade(final IqPacket iqPacket) {
         Preconditions.checkArgument(iqPacket.hasChild("jingle", Namespace.JINGLE));
+        Preconditions.checkArgument(iqPacket.getType() == TYPE.SET);
         final JinglePacket jinglePacket = new JinglePacket();
         jinglePacket.setAttributes(iqPacket.getAttributes());
         jinglePacket.setChildren(iqPacket.getChildren());
@@ -70,11 +71,11 @@ public class JinglePacket extends IqPacket {
     public ReasonWrapper getReason() {
         final Element reasonElement = getJingleChild("reason");
         if (reasonElement == null) {
-            return new ReasonWrapper(Reason.UNKNOWN,null);
+            return new ReasonWrapper(Reason.UNKNOWN, null);
         }
         String text = null;
         Reason reason = Reason.UNKNOWN;
-        for(Element child : reasonElement.getChildren()) {
+        for (Element child : reasonElement.getChildren()) {
             if ("text".equals(child.getName())) {
                 text = child.getContent();
             } else {