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

Incorrect length specification in loose encoding?

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 4.0 RC2, 4.0 RC3, 4.0
    • 4.0
    • Transport
    • None

    Description

      Unless loose-encoded length is mean to mean something different from tight-encoded length, I believe that the length written to the wire for loosely-encoded OpenWire messages is off by 4. I imagine this hasn't been caught before because most clients synchronously read packets off the wire and so can ignore the length specification.

      — activemq-core/src/main/java/org/apache/activemq/openwire/OpenWireFormat.java (revision 399408)
      +++ activemq-core/src/main/java/org/apache/activemq/openwire/OpenWireFormat.java (working copy)
      @@ -172,7 +172,7 @@
      sequence = baos.toByteSequence();

      if( !sizePrefixDisabled )

      { - size = sequence.getLength()-4; + size = sequence.getLength(); ByteArrayPacket packet = new ByteArrayPacket(sequence); PacketData.writeIntBig(packet, size); }

      @@ -253,7 +253,7 @@
      if( !sizePrefixDisabled )

      { looseOut.close(); ByteSequence sequence = baos.toByteSequence(); - dataOut.writeInt(sequence.getLength()-4); + dataOut.writeInt(sequence.getLength()); dataOut.write(sequence.getData(), sequence.getOffset(), sequence.getLength()); }

      Attachments

        Activity

          People

            chirino Hiram R. Chirino
            andrewlu Andrew Lusk
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: