Aias00 opened a new issue, #6852:
URL: https://github.com/apache/shenyu/issues/6852

   ## Description
   The CONNECT payload's will fields are dropped on the floor; nothing stores a 
will (module-wide grep for `willMessage|willTopic|cleanSession|hasWill` returns 
zero hits), `Disconnect` never publishes one, and there is no 
`channelInactive`/ungraceful-close hook that would fire a will on a dropped 
connection.
   
   ## Location
   - 
`shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/Connect.java`
 (connect method never reads will fields)
   - 
`shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/Disconnect.java:39`
 (`// todo Last words`)
   - 
`shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/MqttTransportHandler.java:42-44`
 (empty `operationComplete`)
   
   ## Impact
   Clients that publish a Last Will during CONNECT never have it delivered on 
an ungraceful disconnect, defeating a core reliability feature of MQTT.
   
   ## Suggested fix
   Parse and store will fields in `MqttContext`/session on CONNECT; on 
`channelInactive` for a non-clean session with a will, publish the will message 
with its configured QoS/retain; clear the will on graceful DISCONNECT.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to