Bug 999505

Summary: [AMQP 1.0] qpidd's SASL support does not correctly deal with fully asynchronous interaction
Product: Red Hat Enterprise MRG Reporter: Gordon Sim <gsim>
Component: qpid-cppAssignee: Gordon Sim <gsim>
Status: CLOSED CURRENTRELEASE QA Contact: Ernie <eallen>
Severity: unspecified Docs Contact: Ernie <eallen>
Priority: medium    
Version: DevelopmentCC: eallen, esammons, iboverma, jross, pematous
Target Milestone: 3.0Keywords: OtherQA
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qpid-cpp-0.22-12 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-01-21 12:55:43 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1010399    

Description Gordon Sim 2013-08-21 12:39:32 UTC
Description of problem:

The SASL implementation in qpidd expects the peer to wait for a SASL-INIT before it sends the SASL_OUTCOME, which isn't necessarily the case.

Version-Release number of selected component (if applicable):

qpid 0.22

How reproducible:

100%, but a little bit involved and requires components outside of product set.

Steps to Reproduce:
1. Start recv example from proton listening on a given port
2. have a qpidd instance connect to that, e.g:
   2a: qpidt create domain other url=<host>:<port> sasl_mechanisms=ANONYMOUS (where <host> and <port> are as used in 1.)
   2b: qpidt create outgoing domain=other source=blah target=amq.fanout
3. send message to amq.fanout

Alternatively use dispatch-router instead of recv in step 1, change outgoing to incoming in step 2b, and in step 3 send a message to dispacth-router with the to filed set to amq.fanout (-P x-amqp-to=amq.fanout for spout or qpid-send). In this case message should then be received by a drain on amq.fanout (established before the message is sent).

Actual results:

The link in 2 is not established and message is not received/

Expected results:

Link is established and message is received.

Additional info:

Though this does not affect product it would be nice for the productised version of the AMQP support to be more widely interoperable with newer component such as proton messenger and dispatch-router.

Comment 1 Gordon Sim 2013-08-21 12:40:18 UTC
Fixed upstream: https://svn.apache.org/r1514465

Comment 2 Ernie 2014-04-02 19:50:41 UTC
Verified RHEL 6.5 32 and 64 bit
with packages from qpid-cpp-0.22-36

qpidt is no longer available, but the functionallity is build into qpid-config

reproducer commands using qpid-config are:
- start c++ broker on port 5672
- qpid-config add queue q
- recv amqp://0.0.0.0:5672/q

in another window
- qpid-config add domain other --argument url=0.0.0.0:5672 --sasl-mechanism=ANONYMOUS
- qpid-config add incoming link --argument domain=other --argument target=q --argument source=q
- spout --content "Passed" q

recv in original window should receive the message