Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Won't Fix
-
0.13
-
None
-
None
Description
Python and C++ clients sends different commands to the broker.
Address:
response/response.QPID_CLIENT.response_queue_1;
{
create: receiver,
link:
{
name: 'response.QPID_CLIENT.response_queue_1',
durable: false,
x-declare:
{
auto-delete: true,
exclusive: true,
arguments:
}
}
}
I have set the log level to trace+ on my broker and here is what I got from the log when I have used the same same addres for python as well as for c++ client.
Python:
2011-08-26 12:13:08 trace QPID_CLIENT@QPID9999.7ce755ba-f29b-4532-8af9-b52dad8e8450:0: recv cmd 0:
{ExchangeQueryBody: name=response; }2011-08-26 12:13:08 trace QPID_CLIENT@QPID9999.7ce755ba-f29b-4532-8af9-b52dad8e8450:0: recv cmd 1:
{QueueQueryBody: queue=response; }2011-08-26 12:13:08 trace QPID_CLIENT@QPID9999.7ce755ba-f29b-4532-8af9-b52dad8e8450:0: recv cmd 2: {QueueDeclareBody: queue=response.QPID_CLIENT.response_queue_1; exclusive=1; auto-delete=1; arguments=
{qpid.max_count:F8:int64(1000),qpid.max_size:F8:int64(1000000),qpid.policy_type:V2:4:str16(ring)}; }
2011-08-26 12:13:08 trace QPID_CLIENT@QPID9999.7ce755ba-f29b-4532-8af9-b52dad8e8450:0: recv cmd 3:
2011-08-26 12:13:08 trace QPID_CLIENT@QPID9999.7ce755ba-f29b-4532-8af9-b52dad8e8450:0: recv cmd 4:
{MessageSubscribeBody: queue=response.QPID_CLIENT.response_queue_1; destination=0; accept-mode=0; acquire-mode=0; }2011-08-26 12:13:08 trace QPID_CLIENT@QPID9999.7ce755ba-f29b-4532-8af9-b52dad8e8450:0: recv cmd 5:
{MessageSetFlowModeBody: destination=0; flow-mode=0; }2011-08-26 12:13:08 trace QPID_CLIENT@QPID9999.7ce755ba-f29b-4532-8af9-b52dad8e8450:0: recv cmd 6:
{MessageCancelBody: destination=0; }2011-08-26 12:13:08 trace QPID_CLIENT@QPID9999.7ce755ba-f29b-4532-8af9-b52dad8e8450:0: recv cmd 7:
{QueueDeleteBody: queue=response.QPID_CLIENT.response_queue_1; }C++:
2011-08-26 12:15:48 trace QPID_CLIENT@QPID9999.a167bd61-8aa3-4900-9ee7-a646bf3c1c63: recv cmd 0:
{ExecutionSyncBody: }2011-08-26 12:15:48 trace QPID_CLIENT@QPID9999.a167bd61-8aa3-4900-9ee7-a646bf3c1c63: recv cmd 1:
{ExchangeQueryBody: name=response; }2011-08-26 12:15:48 trace QPID_CLIENT@QPID9999.a167bd61-8aa3-4900-9ee7-a646bf3c1c63: recv cmd 2: {ExchangeDeclareBody: exchange=response; type=topic; alternate-exchange=; arguments={}; }
C++ client will get 'ACL denied exchange declare request from QPID_CLIENT@QPID9999' from the broker.
So to make the C++ client to be able to pass through I had to change the adress as followed:
response/response.QPID_CLIENT.response_queue_1;
{
assert: never,
create: never,
node :
,
link:
{
name: 'response.QPID_CLIENT.response_queue_1',
durable: false,
x-declare:
{
auto-delete: true,
exclusive: true,
arguments:
}
}
}
And I had to add two ACL rules:
acl allow members create exchange name=response passive=true
acl allow QPID_CLIENT@QPID9999 create queue name=response.QPID_CLIENT.* passive=true