Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-14194

Invalid JID is generated for private chat in XMPP component

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.24.2, 3.0.0.RC3
    • Fix Version/s: 2.24.3, 3.0.0, 2.25.0
    • Component/s: camel-xmpp
    • Labels:
      None
    • Estimated Complexity:
      Unknown

      Description

      An invalid JID, containing non-LDH characters, is created for the receiver (participant) when a private chat is started. As a result it is not possible to send chat messages directly to an user.

      Group chats are not affected by the issue.

      See: https://stackoverflow.com/questions/58168566/problem-sending-messages-from-camel-xmpp-jid-malformed

       

      Exception seen in Openfire (4.4.3): 

      java.lang.IllegalArgumentException: The input 'xxxx.xxx.xx@chat:xxxxx@xxxx.xxx.xx:camel' is not a valid JID domain part: Contains non-LDH characters.
      

       

      The issue can be fixed by removing the thread name when the JID is created: 

      diff --git a/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java b/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
      index b1b30a117ed..6eb1b9cb59c 100644
      --- a/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
      +++ b/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
      @@ -97,7 +97,7 @@ public class XmppPrivateChatProducer extends DefaultProducer {     private Chat getOrCreateChat(ChatManager chatManager, final String participant, String thread) throws XmppStringprepException {
               // this starts a new chat or retrieves the pre-existing one in a threadsafe manner
      -        return chatManager.chatWith(JidCreate.entityBareFrom(participant + "@" + thread));
      +        return chatManager.chatWith(JidCreate.entityBareFrom(participant));
           }     private synchronized void reconnect() throws InterruptedException, IOException, SmackException, XMPPException {
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                pramming Johan Pramming
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 20m
                  20m