Ken Giusti commented on PROTON-1133:

This issue is caused by a defect in the way Reactor obtains the socket address 
for its connections.

The reactor - or more specifically, the io_handler used by connections created 
via the reactor - expects to find the socket address in the Connection's 
'hostname' property.  See proton-c/src/reactor/connection.c:pni_handle_bound().

This isn't the correct use of 'hostname' as per the AMQP 1.0 spec:

"The name of the host (either fully qualified or relative) to which the sending 
peer is connecting. It is
not mandatory to provide the hostname. If no hostname is provided the receiving 
select a default based on its own configuration. This field can be used by AMQP 
proxies to
determine the correct back-end service to connect the client to.
This field MAY already have been specified by the sasl-init frame, if a SASL 
layer is used, or,
the server name indication extension as described in RFC-4366, if a TLS layer 
is used, in which
case this field SHOULD be null or contain the same value. It is undefined what 
a different value
to that already specified means"

Reactor assumes that the user will set the transport-level address (eg socket 
address) in the hostname property.  Thus port information needs to be placed in 
the 'hostname' (if 5672 is not used).  It also forces the user to set hostname 
to a numeric address if necessary.

This conflicts with the above specification.

Reactor needs a different approach to configuring the transport-level address 
that doesn't conflict with the hostname property.

> Proton C includes port number in AMQP Open hostname
> ---------------------------------------------------
>                 Key: PROTON-1133
>                 URL: https://issues.apache.org/jira/browse/PROTON-1133
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: proton-c, python-binding
>    Affects Versions: 0.12.0
>            Reporter: Chuck Rolke
>             Fix For: 0.13.0
> A command like:
> {noformat}
> qdmanage -b amqp://u1:password@photoserver:21000 --type policyStats query
> {noformat}
> sends the port number in the hostname field of the AMQP Open:
> {noformat}
> Mon Feb  8 11:37:46 2016 SERVER (trace) [2]:0 <- @open(16) 
> [container-id="34e49947-b4df-4a01-9570-0a74e9e57b5b", 
> hostname="photoserver:21000", channel-max=32767] 
> (/home/chug/git/qpid-dispatch/src/server.c:75)
> {noformat}
> Built in C example code using Proton only does the same thing.
> This bug originally reported at 
> https://issues.apache.org/jira/browse/DISPATCH-214

This message was sent by Atlassian JIRA

Reply via email to