Matt Selway created PROTON-2490:
-----------------------------------
Summary: SASL to AMQP handoff is unsuccessful in server contexts
(e.g. for peer-to-peer)
Key: PROTON-2490
URL: https://issues.apache.org/jira/browse/PROTON-2490
Project: Qpid Proton
Issue Type: Bug
Components: protonj2
Affects Versions: protonj2-1.0.0-M4
Reporter: Matt Selway
Assignee: Timothy A. Bish
When using the engine in a server context, i.e., not the client classes, the
SASL to AMQP handoff does not complete correctly leaving the
ProtonFrameDecodingHandler in the incorrect to process the followup AMQPHeader
message.
The problem appears to be caused by the `handleWrite(..., SASLEnvelope)` and
`handleRead(..., SASLEnvelope)` methods resetting the
ProtonFrameDecodingHandler's pipeline interests to 'read only'. However, this
occurs before it processes the write of the final SASL Outcome frame, which is
used to reset the ProtonFrameDecodingHandler's state to handle the next
incoming AMQPHeader frame.
The ProtonFrameDecodingHandler needs to be modified such that it only resets
the interest to read only once it has processed the SASLOutcome and not before
(unless it is a non-SASL engine).
As it stands, it prevents the ProtonJ2 library from being used out of the box
in server contexts, which default to SASL engine configurations. A temporary
workaround is to add an engine handler to the pipeline that listens to writes,
searches the pipeline for the decoder, and forces its reset at the appropriate
time.
It is recommended that Unit Tests be written to cover the SASL to AMQP handover
portion of the protocol (and possibly other state transitions currently
missing) as the current test suite only tests some aspects of the SASL protocol
and AMQP protocols independently.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]