[APOLLO] STOMP 1.2 broker sends frames with NUL bytes in the header

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

[APOLLO] STOMP 1.2 broker sends frames with NUL bytes in the header


during tests I found that the Apollo 1.6 server in some situations sends
a ERROR frame which contains an invalid character.

My (Delphi/Free Pascal) client library detected this character is a NUL
(#0) byte. The error message in the ERROR frame message header is:

"Invalid STOMP frame command\c <NUL>SUBSCRIBE"

I am still investigating why my client library sends this NUL byte to
the broker. However I wanted to report this also because the server
should not send non-compliant STOMP frames back to the client.

Other message brokers seem to silently ignore the incoming NUL byte
(ActiveMQ 5.9 and RabbitMQ 3.2.4), as they send no error frame back.

Here is the full trace log output which shows the communication between
client and server

2014-03-08 15:13:05,480 | TRACE | received frame:
StompFrame(CONNECT,List((login,admin), (passcode,password),
(accept-version,1.2), (heart-beat,0,0),
(host,localhost)),NilContent,true,List()) |
2014-03-08 15:13:05,559 | TRACE | sending frame:
StompFrame(CONNECTED,List((version,1.2), (server,apache-apollo/1.6),
(host-id,mybroker), (session,mybroker-21ed), (heart-beat,100,10000),
(user-id,admin)),NilContent,false,List()) |
2014-03-08 15:13:05,574 | TRACE | received frame:
(id,{0A809642-269F-4854-9831-B7FDE85CAEC8})),NilContent,true,List()) |
2014-03-08 15:13:05,574 | TRACE | sending frame:
StompFrame(ERROR,List((message,Invalid STOMP frame command\c
<NUL>SUBSCRIBE)),BufferContent(ascii: ),false,List()) |

Michael Justin