Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
proton-0.8
-
None
Description
The transport can emit frames with an invalid channel number after a local session close is performed.
A side effect of calling close on the session is that the channel number is unmapped when the end frame is sent, and the associated field set to the value -1. The transport can subsequently send frames which then use this -1 value, treating it as channel 65535 when sent to represent the unsigned channel number. For example, if a local link close(+detach?) call is performed in response to a remote detach after a local session close is performed, a detach frame can be emitted with channel 65535. Similarly, I have noticed disposition frames being sent with channel 65535.
Proton-C appears to protect against thse situations by inspecting whether the channel number has been set as >= 0.