Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-8409

Unexpected \\r instead of \r in header property in incoming messages

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

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 5.16.4, 5.17.0
    • STOMP
    • None
    • Broker: ActiveMQ 5.16.3

      OS: Windows 10

      Client: own implementation

    Description

      I tested the Stomp acceptor handling of escape sequences as specified in the 1.2 protocol documentation.

      With ActiveMQ Artemis 2.19.0, all escape sequences are received according to the 1.2 specification:

      https://stomp.github.io/stomp-specification-1.2.html#Value_Encoding

       

      With ActiveMQ "Classic" however, there is a difference: when the escape sequence \r is used in SEND frame header values, it will be received as \\r in incoming MESSAGE frames.

      Test with Artemis 2.19.0

      The first example uses the Artemis broker. A message with four special escaped characters (backslash, colon, newline and carriage return) is sent to the broker and then received with identical values.

      As you can see in the example, the header property keyr in the outgoing SEND frame has the value value\r and is received as value\r in the incoming MESSAGE frame.

      Unescaped, this is "value" + carriage return

       

      CONNECTED
      version:1.2
      session:be014f64
      server:ActiveMQ-Artemis/2.19.0 ActiveMQ Artemis Messaging Engine
       
      SEND
      destination:queue/TStomp12TestCase.TestEscapes.Q
      keyb:value\\
      keyc:value\c
      keyn:value\n
      keyr:value\r
      content-type:text/plain
       
      Send:Bytes:112
      SUBSCRIBE
      destination:queue/TStomp12TestCase.TestEscapes.Q
      ack:auto
      id:{13084522-1FEF-4B8A-802A-4656A77784EA}
       
      MESSAGE
      subscription:{13084522-1FEF-4B8A-802A-4656A77784EA}
      message-id:10737418259
      destination:queue/TStomp12TestCase.TestEscapes.Q
      expires:0
      redelivered:false
      priority:4
      persistent:false
      timestamp:1636280945342
      content-type:text/plain
      keyn:value\n
      keyc:value\c
      keyb:value\\
      keyr:value\r
      

       

      Test with ActiveMQ 5.16.3

      As you can see in the example, the header property keyr in the outgoing SEND frame has the value value\r (as in the first test) but is received as value\\r in the incoming MESSAGE frame. Unescaped, this is not "value" + carriage return, but "value\r".

      CONNECTED
      server:ActiveMQ/5.16.3
      heart-beat:0,0
      session:ID:DESKTOP-3LKMPLS-49926-1636281770555-3:4
      version:1.2
      
      SEND
      destination:/queue/TStomp12TestCase.TestEscapes.Q
      keyb:value\\
      keyc:value\c
      keyn:value\n
      keyr:value\r
      content-type:text/plain
      
      SUBSCRIBE
      destination:/queue/TStomp12TestCase.TestEscapes.Q
      ack:auto
      id:{7316E53E-E7C3-43DC-B2EF-75BCFC09D899}
      
      MESSAGE
      keyr:value\\r
      expires:0
      destination:/queue/TStomp12TestCase.TestEscapes.Q
      subscription:{7316E53E-E7C3-43DC-B2EF-75BCFC09D899}
      priority:4
      keyb:value\\
      keyc:value\c
      message-id:ID\cDESKTOP-3LKMPLS-49926-1636281770555-3\c4\c-1\c1\c1
      content-type:text/plain
      keyn:value\n
      timestamp:1636281794663
      

       

       

      So it seems that ActiveMQ Classic performs either an incorrect unescaping on the incoming message, or an incorrect escaping on the outgoing message.
       

      Attachments

        Activity

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

          People

            jbonofre Jean-Baptiste Onofré
            mjustin Michael Justin
            Votes:
            0 Vote for this issue
            Watchers:
            5 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 - 2h 20m
                2h 20m

                Slack

                  Issue deployment