disabling failed assertion for test as it is expected based on how this
test is usin the client
(cherry picked from commit 667ea7c640dd0203b2ecdc83f74435e77cbe44ab)
The MQTT transport will now throw an exception if a PINGREQ is sent to
the broker if a CONNECT packet has not been received first as the spec
says CONNECT must be the first packet sent.
(cherry picked from commit 6dacef1c9552edbad656c31d784179c2cd179b2e)
On MQTT Websocket close, a LWT message will be properly sent if
configured and a disconnect packet was not received
(cherry picked from commit bd442a3388b0f127c8f8b9fad5e4888b77bb42c3)
Create a proper SSLContext for the MQTT client provider in the tests to
avoid failure on newer JDKs
(cherry picked from commit 6e2edf08c3e3dda7656dffa1af8c92b6ed333c22)
Adding support for auto detection of wire protocols over a transport.
OpenWire, AMQP, STOMP, and MQTT can all be detected and the broker
will properly handle each one over a given Transport. Currently
auto TCP, NIO, SSL, and NIO+SSL transports can handle auto-detection
of the wire format and client but support could be added in the
future for other transports like websockets.
The code that adds subscriptions for retroactive subscribers did not
account for the case where the last ack position in the ackLocations
table is used as a placeholder for the next incoming message and there
may not be an element in the messageReference tracker for that index
especially after restart when the index is reloaded. The code needed to
check this when it iterates of the existing message references to add a
value so to avoid the NPE.
Also cleaned up the MQTT tests such that they place their data dir in
./target so that old stores get removed on 'mvn clean'
Clean up the MQTT over WebSocket code to allow for handling link
stealing and inactivity monitor. Ensures that the web socket instances
get cleaned up on errors and avoids leaks that might otherwise arise.
Adds new tests for MQTT over WebSocket.
Adds some missing license headers as well.
Add better support for maxFrameSize configuration that fits with the
defaults configuration for the broker by allowing the maxFrameSize to be
configured via ?wireFormat.maxFrameSize on STOMP, AMQP, and MQTT.
Previously we only supported transport.wireFormat.maxFrameSize.
Don't dip into the store to recover durable topic subscriptions or queue
subscriptions depending on the subscription strategy in use. The needed
information is always kept in either TopicRegion or QueueRegion even
after restart as all stored destinations are reloaded as the broker is
started.