support 'ringing' jingle message

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/parser/MessageParser.java                |  3 
src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java | 12 
src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java     |  1 
3 files changed, 13 insertions(+), 3 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/parser/MessageParser.java 🔗

@@ -52,7 +52,8 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
 
     private static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm:ss", Locale.ENGLISH);
 
-    private static final List<String> JINGLE_MESSAGE_ELEMENT_NAMES = Arrays.asList("accept", "propose", "proceed", "reject", "retract");
+    private static final List<String> JINGLE_MESSAGE_ELEMENT_NAMES =
+            Arrays.asList("accept", "propose", "proceed", "reject", "retract", "ringing");
 
     public MessageParser(XmppConnectionService service) {
         super(service);

src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java 🔗

@@ -266,6 +266,7 @@ public class JingleConnectionManager extends AbstractConnectionManager {
             return;
         }
         final boolean fromSelf = from.asBareJid().equals(account.getJid().asBareJid());
+        // XEP version 0.6.0 sends proceed, reject, ringing to bare jid
         final boolean addressedDirectly = to != null && to.equals(account.getJid());
         final AbstractJingleConnection.Id id;
         if (fromSelf) {
@@ -474,12 +475,19 @@ public class JingleConnectionManager extends AbstractConnectionManager {
                                     + " to deliver reject");
                 }
             }
+        } else if (addressedDirectly && "ringing".equals(message.getName())) {
+            Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": " + from + " started ringing");
+            updateProposedSessionDiscovered(
+                    account, from, sessionId, DeviceDiscoveryState.DISCOVERED);
         } else {
             Log.d(
                     Config.LOGTAG,
                     account.getJid().asBareJid()
-                            + ": retrieved out of order jingle message"
-                            + message);
+                            + ": retrieved out of order jingle message from "
+                            + from
+                            + message
+                            + ", addressedDirectly="
+                            + addressedDirectly);
         }
     }