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

Invalid JID is generated for private chat in XMPP component

Agile BoardAttach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.24.2, 3.0.0.RC3
    • 2.24.3, 3.0.0, 2.25.0
    • camel-xmpp
    • None
    • 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

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            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

              Slack

                Issue deployment