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]

Reply via email to