[jira] [Updated] (PROTON-154) link attach, detach, attach sequence on single session does not result in a new link for the 2nd attach

2012-11-28 Thread Hiram Chirino (JIRA)

 [ 
https://issues.apache.org/jira/browse/PROTON-154?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hiram Chirino updated PROTON-154:
-

Component/s: proton-c

 link attach, detach, attach sequence on single session does not result in a 
 new link for the 2nd attach
 ---

 Key: PROTON-154
 URL: https://issues.apache.org/jira/browse/PROTON-154
 Project: Qpid Proton
  Issue Type: Bug
  Components: proton-c, proton-j
Reporter: Hiram Chirino
 Attachments: PROTON-154.patch, PROTON-154-test.patch


 Protocol trace:
 tcp://127.0.0.1:58348 | RECV: Attach{name='topic', handle=1, role=RECEIVER, 
 sndSettleMode=0, rcvSettleMode=0, 
 source=Source{address='topic://testJoramTopic', durable=2, 
 expiryPolicy=never, timeout=0, dynamic=false, dynamicNodeProperties=null, 
 distributionMode=copy, filter=null, defaultOutcome=null, outcomes=null, 
 capabilities=null}, target=Target{address='null', durable=0, 
 expiryPolicy=session-end, timeout=0, dynamic=false, 
 dynamicNodeProperties=null, capabilities=null}, unsettled=null, 
 incompleteUnsettled=false, initialDeliveryCount=null, maxMessageSize=null, 
 offeredCapabilities=null, desiredCapabilities=null, properties=null}
 tcp://127.0.0.1:58348 | SENT: Attach{name='topic', handle=1, role=SENDER, 
 sndSettleMode=2, rcvSettleMode=0, 
 source=Source{address='topic://testJoramTopic', durable=2, 
 expiryPolicy=never, timeout=0, dynamic=false, dynamicNodeProperties=null, 
 distributionMode=copy, filter=null, defaultOutcome=null, outcomes=null, 
 capabilities=null}, target=Target{address='null', durable=0, 
 expiryPolicy=session-end, timeout=0, dynamic=false, 
 dynamicNodeProperties=null, capabilities=null}, unsettled=null, 
 incompleteUnsettled=false, initialDeliveryCount=0, maxMessageSize=null, 
 offeredCapabilities=null, desiredCapabilities=null, properties=null}
 tcp://127.0.0.1:58348 | RECV: Flow{nextIncomingId=1, incomingWindow=2048, 
 nextOutgoingId=0, outgoingWindow=2048, handle=1, deliveryCount=0, 
 linkCredit=100, available=null, drain=false, echo=false, properties=null}
 tcp://127.0.0.1:58348 | RECV: Detach{handle=1, closed=true, error=null}
 tcp://127.0.0.1:58348 | SENT: Detach{handle=1, closed=false, error=null}
 tcp://127.0.0.1:58348 | RECV: Attach{name='topic', handle=1, role=RECEIVER, 
 sndSettleMode=0, rcvSettleMode=0, source=null, 
 target=Target{address='644cf32c-d6c7-45eb-a8b7-3018d4c9594e', durable=0, 
 expiryPolicy=session-end, timeout=0, dynamic=false, 
 dynamicNodeProperties=null, capabilities=null}, unsettled=null, 
 incompleteUnsettled=false, initialDeliveryCount=null, maxMessageSize=null, 
 offeredCapabilities=null, desiredCapabilities=null, properties=null}
 no link is produced on the second attach when you call: 
 protonConnection.linkHead(UNINITIALIZED_SET, INITIALIZED_SET);

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-154) link attach, detach, attach sequence on single session does not result in a new link for the 2nd attach

2012-11-28 Thread Hiram Chirino (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-154?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13505388#comment-13505388
 ] 

Hiram Chirino commented on PROTON-154:
--

Python test case also verifies that this bug exists on the proton-c impl.

 link attach, detach, attach sequence on single session does not result in a 
 new link for the 2nd attach
 ---

 Key: PROTON-154
 URL: https://issues.apache.org/jira/browse/PROTON-154
 Project: Qpid Proton
  Issue Type: Bug
  Components: proton-c, proton-j
Reporter: Hiram Chirino
 Attachments: PROTON-154.patch, PROTON-154-test.patch


 Protocol trace:
 tcp://127.0.0.1:58348 | RECV: Attach{name='topic', handle=1, role=RECEIVER, 
 sndSettleMode=0, rcvSettleMode=0, 
 source=Source{address='topic://testJoramTopic', durable=2, 
 expiryPolicy=never, timeout=0, dynamic=false, dynamicNodeProperties=null, 
 distributionMode=copy, filter=null, defaultOutcome=null, outcomes=null, 
 capabilities=null}, target=Target{address='null', durable=0, 
 expiryPolicy=session-end, timeout=0, dynamic=false, 
 dynamicNodeProperties=null, capabilities=null}, unsettled=null, 
 incompleteUnsettled=false, initialDeliveryCount=null, maxMessageSize=null, 
 offeredCapabilities=null, desiredCapabilities=null, properties=null}
 tcp://127.0.0.1:58348 | SENT: Attach{name='topic', handle=1, role=SENDER, 
 sndSettleMode=2, rcvSettleMode=0, 
 source=Source{address='topic://testJoramTopic', durable=2, 
 expiryPolicy=never, timeout=0, dynamic=false, dynamicNodeProperties=null, 
 distributionMode=copy, filter=null, defaultOutcome=null, outcomes=null, 
 capabilities=null}, target=Target{address='null', durable=0, 
 expiryPolicy=session-end, timeout=0, dynamic=false, 
 dynamicNodeProperties=null, capabilities=null}, unsettled=null, 
 incompleteUnsettled=false, initialDeliveryCount=0, maxMessageSize=null, 
 offeredCapabilities=null, desiredCapabilities=null, properties=null}
 tcp://127.0.0.1:58348 | RECV: Flow{nextIncomingId=1, incomingWindow=2048, 
 nextOutgoingId=0, outgoingWindow=2048, handle=1, deliveryCount=0, 
 linkCredit=100, available=null, drain=false, echo=false, properties=null}
 tcp://127.0.0.1:58348 | RECV: Detach{handle=1, closed=true, error=null}
 tcp://127.0.0.1:58348 | SENT: Detach{handle=1, closed=false, error=null}
 tcp://127.0.0.1:58348 | RECV: Attach{name='topic', handle=1, role=RECEIVER, 
 sndSettleMode=0, rcvSettleMode=0, source=null, 
 target=Target{address='644cf32c-d6c7-45eb-a8b7-3018d4c9594e', durable=0, 
 expiryPolicy=session-end, timeout=0, dynamic=false, 
 dynamicNodeProperties=null, capabilities=null}, unsettled=null, 
 incompleteUnsettled=false, initialDeliveryCount=null, maxMessageSize=null, 
 offeredCapabilities=null, desiredCapabilities=null, properties=null}
 no link is produced on the second attach when you call: 
 protonConnection.linkHead(UNINITIALIZED_SET, INITIALIZED_SET);

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-160) Allow open.hostname to be configured independently of network hostname

2012-11-28 Thread Gordon Sim (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13505408#comment-13505408
 ] 

Gordon Sim commented on PROTON-160:
---

I greatly prefer option (3) as outlined at the end of comment 
#1(https://issues.apache.org/jira/browse/PROTON-160?focusedCommentId=13505199), 
i.e. having some way to configure a messenger to handle addresses (falling back 
to DNS based resolution if no rules exist/apply). Per-message addresses should 
ideally be logical with a flexible mapping to the physical addresses over which 
they should then be transferred. Option 3 seems the safest and neatest solution.

I find option 1 confusing as well as I think being to tied to a particular 
pattern of use. I thinks URLs are actually a less than ideal choice for the 
address syntax as they confuse the notions of (hierarchical) domain scoped 
logical naming with 'connection strings', and adding in various options and 
parameters is I think the thin end of the wedge that will lead to muddiness.

 Allow open.hostname to be configured independently of network hostname
 --

 Key: PROTON-160
 URL: https://issues.apache.org/jira/browse/PROTON-160
 Project: Qpid Proton
  Issue Type: Improvement
  Components: proton-c
Affects Versions: 0.1, 0.2
Reporter: David Ingham

 In a scaled-out, multi-tenant broker environment, the host on which the 
 container is running is often different from the host to which a client is 
 establishing the tcp connection. The 'hostname' field in the connection open 
 performative was added to support this scenario. Currently there's no way to 
 control this from the Messenger API.
 Options include:
 (1) (preferred) add a new 'networkhost' field to Message to allow the network 
 address to be specified. If provided, this information would be used when 
 establishing the network connection and the data in the 'address' field would 
 be used in the connection open hostname field. This is somewhat in line with 
 the way that connection redirect (amqp:connection:redirect) is specified.
 (2) extend the syntax of address with query string to supply hostname, e.g., 
 username:password@tcpaddress:tcpport/entityname?hostname=foo where 'foo' 
 would become the hostname used in the connection open frame. This is the 
 approach used by the current Qpid AMQP 1.0 JMS client.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-160) Allow open.hostname to be configured independently of network hostname

2012-11-28 Thread Rafael H. Schloming (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13505441#comment-13505441
 ] 

Rafael H. Schloming commented on PROTON-160:


I was assuming auto-redirect was part of what was being asked for in 
PROTON-164, but if not we can split that into a separate Jira. I do think it 
would be good if we could make the redirect happen transparently, e.g. treat it 
as part of the resolution process.

Regarding the semantics being discussed, I'm unclear on the need for two 
messages with the same address to connect to different physical endpoints. What 
I'm leaning towards is some way to explicitly specify the TCP endpoint for a 
given address, but not necessarily on a per message basis, rather just a per 
address basis. This would omit both the problematic redirector scenario and 
maintain the semantic that for a given messenger, a given address will always 
resolve to a single connection. I like maintaining this property because I 
think it's a simpler model for users and in particular the security model here 
maps strongly to the one used by web browsers. You only need to look in one 
place (the to field) to figure out where a message is going, and your 
certificates are always validated against that.

To draw an analogy to a web browser, if the to field is the URL, then I think 
the approach option (1) is taking is basically adding another input field to 
your web browser UI that lets you override DNS lookup whenever you type in a 
URL. This would let you type in the same URL twice, and get completely 
different results depending on the value typed into this other field. What I'm 
suggesting with option (3) is pretty much like overriding your /etc/hosts file 
so whenever a given URL appears, it resolves to something you control, but it 
will always resolve to the same thing until you go change your hosts file. I 
think these both have equivalent capabilities, but I feel like option (3) is 
simpler for the scenarios where I can imagine needing this kind of thing.

As an aside, I think this aliasing thing would also give us a path towards more 
advanced configurations, e.g. imagine adding wildcard support and you have an 
easy way to instruct a messenger to direct all (or some subset) of messages 
through a single broker, e.g. alias * - my-broker, or alias *.foo - my-broker 
and alias *.bar - your-broker.

 Allow open.hostname to be configured independently of network hostname
 --

 Key: PROTON-160
 URL: https://issues.apache.org/jira/browse/PROTON-160
 Project: Qpid Proton
  Issue Type: Improvement
  Components: proton-c
Affects Versions: 0.1, 0.2
Reporter: David Ingham

 In a scaled-out, multi-tenant broker environment, the host on which the 
 container is running is often different from the host to which a client is 
 establishing the tcp connection. The 'hostname' field in the connection open 
 performative was added to support this scenario. Currently there's no way to 
 control this from the Messenger API.
 Options include:
 (1) (preferred) add a new 'networkhost' field to Message to allow the network 
 address to be specified. If provided, this information would be used when 
 establishing the network connection and the data in the 'address' field would 
 be used in the connection open hostname field. This is somewhat in line with 
 the way that connection redirect (amqp:connection:redirect) is specified.
 (2) extend the syntax of address with query string to supply hostname, e.g., 
 username:password@tcpaddress:tcpport/entityname?hostname=foo where 'foo' 
 would become the hostname used in the connection open frame. This is the 
 approach used by the current Qpid AMQP 1.0 JMS client.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-154) link attach, detach, attach sequence on single session does not result in a new link for the 2nd attach

2012-11-28 Thread Rafael H. Schloming (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-154?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13505485#comment-13505485
 ] 

Rafael H. Schloming commented on PROTON-154:


I'm a little confused by the closed='false' in the detach. Are you trying to 
reattach to an existing link endpoint?

 link attach, detach, attach sequence on single session does not result in a 
 new link for the 2nd attach
 ---

 Key: PROTON-154
 URL: https://issues.apache.org/jira/browse/PROTON-154
 Project: Qpid Proton
  Issue Type: Bug
  Components: proton-c, proton-j
Reporter: Hiram Chirino
 Attachments: PROTON-154.patch, PROTON-154-test.patch


 Protocol trace:
 tcp://127.0.0.1:58348 | RECV: Attach{name='topic', handle=1, role=RECEIVER, 
 sndSettleMode=0, rcvSettleMode=0, 
 source=Source{address='topic://testJoramTopic', durable=2, 
 expiryPolicy=never, timeout=0, dynamic=false, dynamicNodeProperties=null, 
 distributionMode=copy, filter=null, defaultOutcome=null, outcomes=null, 
 capabilities=null}, target=Target{address='null', durable=0, 
 expiryPolicy=session-end, timeout=0, dynamic=false, 
 dynamicNodeProperties=null, capabilities=null}, unsettled=null, 
 incompleteUnsettled=false, initialDeliveryCount=null, maxMessageSize=null, 
 offeredCapabilities=null, desiredCapabilities=null, properties=null}
 tcp://127.0.0.1:58348 | SENT: Attach{name='topic', handle=1, role=SENDER, 
 sndSettleMode=2, rcvSettleMode=0, 
 source=Source{address='topic://testJoramTopic', durable=2, 
 expiryPolicy=never, timeout=0, dynamic=false, dynamicNodeProperties=null, 
 distributionMode=copy, filter=null, defaultOutcome=null, outcomes=null, 
 capabilities=null}, target=Target{address='null', durable=0, 
 expiryPolicy=session-end, timeout=0, dynamic=false, 
 dynamicNodeProperties=null, capabilities=null}, unsettled=null, 
 incompleteUnsettled=false, initialDeliveryCount=0, maxMessageSize=null, 
 offeredCapabilities=null, desiredCapabilities=null, properties=null}
 tcp://127.0.0.1:58348 | RECV: Flow{nextIncomingId=1, incomingWindow=2048, 
 nextOutgoingId=0, outgoingWindow=2048, handle=1, deliveryCount=0, 
 linkCredit=100, available=null, drain=false, echo=false, properties=null}
 tcp://127.0.0.1:58348 | RECV: Detach{handle=1, closed=true, error=null}
 tcp://127.0.0.1:58348 | SENT: Detach{handle=1, closed=false, error=null}
 tcp://127.0.0.1:58348 | RECV: Attach{name='topic', handle=1, role=RECEIVER, 
 sndSettleMode=0, rcvSettleMode=0, source=null, 
 target=Target{address='644cf32c-d6c7-45eb-a8b7-3018d4c9594e', durable=0, 
 expiryPolicy=session-end, timeout=0, dynamic=false, 
 dynamicNodeProperties=null, capabilities=null}, unsettled=null, 
 incompleteUnsettled=false, initialDeliveryCount=null, maxMessageSize=null, 
 offeredCapabilities=null, desiredCapabilities=null, properties=null}
 no link is produced on the second attach when you call: 
 protonConnection.linkHead(UNINITIALIZED_SET, INITIALIZED_SET);

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Assigned] (PROTON-169) Provide examples using web application frameworks

2012-11-28 Thread Darryl L. Pierce (JIRA)

 [ 
https://issues.apache.org/jira/browse/PROTON-169?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Darryl L. Pierce reassigned PROTON-169:
---

Assignee: Darryl L. Pierce

 Provide examples using web application frameworks
 -

 Key: PROTON-169
 URL: https://issues.apache.org/jira/browse/PROTON-169
 Project: Qpid Proton
  Issue Type: Improvement
  Components: proton-c
Reporter: Darryl L. Pierce
Assignee: Darryl L. Pierce

 Provide examples for writing messaging web apps using Ruby on Rails, Django 
 and similar web technologies.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Created] (PROTON-169) Provide examples using web application frameworks

2012-11-28 Thread Darryl L. Pierce (JIRA)
Darryl L. Pierce created PROTON-169:
---

 Summary: Provide examples using web application frameworks
 Key: PROTON-169
 URL: https://issues.apache.org/jira/browse/PROTON-169
 Project: Qpid Proton
  Issue Type: Improvement
  Components: proton-c
Reporter: Darryl L. Pierce


Provide examples for writing messaging web apps using Ruby on Rails, Django and 
similar web technologies.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-154) link attach, detach, attach sequence on single session does not result in a new link for the 2nd attach

2012-11-28 Thread Hiram Chirino (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-154?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13505576#comment-13505576
 ] 

Hiram Chirino commented on PROTON-154:
--

Hi Rafael, that's a different issue.  See PROTON-156.

 link attach, detach, attach sequence on single session does not result in a 
 new link for the 2nd attach
 ---

 Key: PROTON-154
 URL: https://issues.apache.org/jira/browse/PROTON-154
 Project: Qpid Proton
  Issue Type: Bug
  Components: proton-c, proton-j
Reporter: Hiram Chirino
 Attachments: PROTON-154.patch, PROTON-154-test.patch


 Protocol trace:
 tcp://127.0.0.1:58348 | RECV: Attach{name='topic', handle=1, role=RECEIVER, 
 sndSettleMode=0, rcvSettleMode=0, 
 source=Source{address='topic://testJoramTopic', durable=2, 
 expiryPolicy=never, timeout=0, dynamic=false, dynamicNodeProperties=null, 
 distributionMode=copy, filter=null, defaultOutcome=null, outcomes=null, 
 capabilities=null}, target=Target{address='null', durable=0, 
 expiryPolicy=session-end, timeout=0, dynamic=false, 
 dynamicNodeProperties=null, capabilities=null}, unsettled=null, 
 incompleteUnsettled=false, initialDeliveryCount=null, maxMessageSize=null, 
 offeredCapabilities=null, desiredCapabilities=null, properties=null}
 tcp://127.0.0.1:58348 | SENT: Attach{name='topic', handle=1, role=SENDER, 
 sndSettleMode=2, rcvSettleMode=0, 
 source=Source{address='topic://testJoramTopic', durable=2, 
 expiryPolicy=never, timeout=0, dynamic=false, dynamicNodeProperties=null, 
 distributionMode=copy, filter=null, defaultOutcome=null, outcomes=null, 
 capabilities=null}, target=Target{address='null', durable=0, 
 expiryPolicy=session-end, timeout=0, dynamic=false, 
 dynamicNodeProperties=null, capabilities=null}, unsettled=null, 
 incompleteUnsettled=false, initialDeliveryCount=0, maxMessageSize=null, 
 offeredCapabilities=null, desiredCapabilities=null, properties=null}
 tcp://127.0.0.1:58348 | RECV: Flow{nextIncomingId=1, incomingWindow=2048, 
 nextOutgoingId=0, outgoingWindow=2048, handle=1, deliveryCount=0, 
 linkCredit=100, available=null, drain=false, echo=false, properties=null}
 tcp://127.0.0.1:58348 | RECV: Detach{handle=1, closed=true, error=null}
 tcp://127.0.0.1:58348 | SENT: Detach{handle=1, closed=false, error=null}
 tcp://127.0.0.1:58348 | RECV: Attach{name='topic', handle=1, role=RECEIVER, 
 sndSettleMode=0, rcvSettleMode=0, source=null, 
 target=Target{address='644cf32c-d6c7-45eb-a8b7-3018d4c9594e', durable=0, 
 expiryPolicy=session-end, timeout=0, dynamic=false, 
 dynamicNodeProperties=null, capabilities=null}, unsettled=null, 
 incompleteUnsettled=false, initialDeliveryCount=null, maxMessageSize=null, 
 offeredCapabilities=null, desiredCapabilities=null, properties=null}
 no link is produced on the second attach when you call: 
 protonConnection.linkHead(UNINITIALIZED_SET, INITIALIZED_SET);

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Comment Edited] (PROTON-154) link attach, detach, attach sequence on single session does not result in a new link for the 2nd attach

2012-11-28 Thread Hiram Chirino (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-154?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13505576#comment-13505576
 ] 

Hiram Chirino edited comment on PROTON-154 at 11/28/12 3:50 PM:


Hi Rafael, no, both endpoints are detaching. It's just the it always sets it to 
false. but that's a different issue.  See PROTON-156.

  was (Author: chirino):
Hi Rafael, that's a different issue.  See PROTON-156.
  
 link attach, detach, attach sequence on single session does not result in a 
 new link for the 2nd attach
 ---

 Key: PROTON-154
 URL: https://issues.apache.org/jira/browse/PROTON-154
 Project: Qpid Proton
  Issue Type: Bug
  Components: proton-c, proton-j
Reporter: Hiram Chirino
 Attachments: PROTON-154.patch, PROTON-154-test.patch


 Protocol trace:
 tcp://127.0.0.1:58348 | RECV: Attach{name='topic', handle=1, role=RECEIVER, 
 sndSettleMode=0, rcvSettleMode=0, 
 source=Source{address='topic://testJoramTopic', durable=2, 
 expiryPolicy=never, timeout=0, dynamic=false, dynamicNodeProperties=null, 
 distributionMode=copy, filter=null, defaultOutcome=null, outcomes=null, 
 capabilities=null}, target=Target{address='null', durable=0, 
 expiryPolicy=session-end, timeout=0, dynamic=false, 
 dynamicNodeProperties=null, capabilities=null}, unsettled=null, 
 incompleteUnsettled=false, initialDeliveryCount=null, maxMessageSize=null, 
 offeredCapabilities=null, desiredCapabilities=null, properties=null}
 tcp://127.0.0.1:58348 | SENT: Attach{name='topic', handle=1, role=SENDER, 
 sndSettleMode=2, rcvSettleMode=0, 
 source=Source{address='topic://testJoramTopic', durable=2, 
 expiryPolicy=never, timeout=0, dynamic=false, dynamicNodeProperties=null, 
 distributionMode=copy, filter=null, defaultOutcome=null, outcomes=null, 
 capabilities=null}, target=Target{address='null', durable=0, 
 expiryPolicy=session-end, timeout=0, dynamic=false, 
 dynamicNodeProperties=null, capabilities=null}, unsettled=null, 
 incompleteUnsettled=false, initialDeliveryCount=0, maxMessageSize=null, 
 offeredCapabilities=null, desiredCapabilities=null, properties=null}
 tcp://127.0.0.1:58348 | RECV: Flow{nextIncomingId=1, incomingWindow=2048, 
 nextOutgoingId=0, outgoingWindow=2048, handle=1, deliveryCount=0, 
 linkCredit=100, available=null, drain=false, echo=false, properties=null}
 tcp://127.0.0.1:58348 | RECV: Detach{handle=1, closed=true, error=null}
 tcp://127.0.0.1:58348 | SENT: Detach{handle=1, closed=false, error=null}
 tcp://127.0.0.1:58348 | RECV: Attach{name='topic', handle=1, role=RECEIVER, 
 sndSettleMode=0, rcvSettleMode=0, source=null, 
 target=Target{address='644cf32c-d6c7-45eb-a8b7-3018d4c9594e', durable=0, 
 expiryPolicy=session-end, timeout=0, dynamic=false, 
 dynamicNodeProperties=null, capabilities=null}, unsettled=null, 
 incompleteUnsettled=false, initialDeliveryCount=null, maxMessageSize=null, 
 offeredCapabilities=null, desiredCapabilities=null, properties=null}
 no link is produced on the second attach when you call: 
 protonConnection.linkHead(UNINITIALIZED_SET, INITIALIZED_SET);

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Created] (PROTON-170) generated pkg config file doesn't actually include paths if a different install location is used

2012-11-28 Thread Gordon Sim (JIRA)
Gordon Sim created PROTON-170:
-

 Summary: generated pkg config file doesn't actually include paths 
if a different install location is used
 Key: PROTON-170
 URL: https://issues.apache.org/jira/browse/PROTON-170
 Project: Qpid Proton
  Issue Type: Bug
  Components: proton-c
Affects Versions: 0.2
Reporter: Gordon Sim


E.g. cmake -DCMAKE_INSTALL_PREFIX=/path/to/non-standard/install  make install 
will install a pkg config file that doesn't have the include and lib 
directories set.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Assigned] (PROTON-170) generated pkg config file doesn't actually include paths if a different install location is used

2012-11-28 Thread Gordon Sim (JIRA)

 [ 
https://issues.apache.org/jira/browse/PROTON-170?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gordon Sim reassigned PROTON-170:
-

Assignee: Andrew Stitcher

Andrew, requesting review from someone more expert in cmake and pkgconfig...

 generated pkg config file doesn't actually include paths if a different 
 install location is used
 

 Key: PROTON-170
 URL: https://issues.apache.org/jira/browse/PROTON-170
 Project: Qpid Proton
  Issue Type: Bug
  Components: proton-c
Affects Versions: 0.2
Reporter: Gordon Sim
Assignee: Andrew Stitcher
 Attachments: PROTON-170.patch


 E.g. cmake -DCMAKE_INSTALL_PREFIX=/path/to/non-standard/install  make 
 install will install a pkg config file that doesn't have the include and lib 
 directories set.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-160) Allow open.hostname to be configured independently of network hostname

2012-11-28 Thread Affan Dar (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13505706#comment-13505706
 ] 

Affan Dar commented on PROTON-160:
--

I think the assumption behind option (1) was that adding a connection level 
setting (such as an alias) may not be appropriate for the level that the 
messenger API is operating it. Seems like that is not a big issue which is 
great. Connection aliasing is a good solution and will work for all scenarios 
(reconnect, redirect etc). It will also make the receive side more symmetric 
with the send side which is goodness. 

 Allow open.hostname to be configured independently of network hostname
 --

 Key: PROTON-160
 URL: https://issues.apache.org/jira/browse/PROTON-160
 Project: Qpid Proton
  Issue Type: Improvement
  Components: proton-c
Affects Versions: 0.1, 0.2
Reporter: David Ingham

 In a scaled-out, multi-tenant broker environment, the host on which the 
 container is running is often different from the host to which a client is 
 establishing the tcp connection. The 'hostname' field in the connection open 
 performative was added to support this scenario. Currently there's no way to 
 control this from the Messenger API.
 Options include:
 (1) (preferred) add a new 'networkhost' field to Message to allow the network 
 address to be specified. If provided, this information would be used when 
 establishing the network connection and the data in the 'address' field would 
 be used in the connection open hostname field. This is somewhat in line with 
 the way that connection redirect (amqp:connection:redirect) is specified.
 (2) extend the syntax of address with query string to supply hostname, e.g., 
 username:password@tcpaddress:tcpport/entityname?hostname=foo where 'foo' 
 would become the hostname used in the connection open frame. This is the 
 approach used by the current Qpid AMQP 1.0 JMS client.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-160) Allow open.hostname to be configured independently of network hostname

2012-11-28 Thread Rafael H. Schloming (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13505715#comment-13505715
 ] 

Rafael H. Schloming commented on PROTON-160:


Ok, thanks for wading through my ramblings. ;-) I'll take a crack at this and 
post again when I have something concrete.

 Allow open.hostname to be configured independently of network hostname
 --

 Key: PROTON-160
 URL: https://issues.apache.org/jira/browse/PROTON-160
 Project: Qpid Proton
  Issue Type: Improvement
  Components: proton-c
Affects Versions: 0.1, 0.2
Reporter: David Ingham

 In a scaled-out, multi-tenant broker environment, the host on which the 
 container is running is often different from the host to which a client is 
 establishing the tcp connection. The 'hostname' field in the connection open 
 performative was added to support this scenario. Currently there's no way to 
 control this from the Messenger API.
 Options include:
 (1) (preferred) add a new 'networkhost' field to Message to allow the network 
 address to be specified. If provided, this information would be used when 
 establishing the network connection and the data in the 'address' field would 
 be used in the connection open hostname field. This is somewhat in line with 
 the way that connection redirect (amqp:connection:redirect) is specified.
 (2) extend the syntax of address with query string to supply hostname, e.g., 
 username:password@tcpaddress:tcpport/entityname?hostname=foo where 'foo' 
 would become the hostname used in the connection open frame. This is the 
 approach used by the current Qpid AMQP 1.0 JMS client.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Assigned] (PROTON-160) Allow open.hostname to be configured independently of network hostname

2012-11-28 Thread Rafael H. Schloming (JIRA)

 [ 
https://issues.apache.org/jira/browse/PROTON-160?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rafael H. Schloming reassigned PROTON-160:
--

Assignee: Rafael H. Schloming

 Allow open.hostname to be configured independently of network hostname
 --

 Key: PROTON-160
 URL: https://issues.apache.org/jira/browse/PROTON-160
 Project: Qpid Proton
  Issue Type: Improvement
  Components: proton-c
Affects Versions: 0.1, 0.2
Reporter: David Ingham
Assignee: Rafael H. Schloming

 In a scaled-out, multi-tenant broker environment, the host on which the 
 container is running is often different from the host to which a client is 
 establishing the tcp connection. The 'hostname' field in the connection open 
 performative was added to support this scenario. Currently there's no way to 
 control this from the Messenger API.
 Options include:
 (1) (preferred) add a new 'networkhost' field to Message to allow the network 
 address to be specified. If provided, this information would be used when 
 establishing the network connection and the data in the 'address' field would 
 be used in the connection open hostname field. This is somewhat in line with 
 the way that connection redirect (amqp:connection:redirect) is specified.
 (2) extend the syntax of address with query string to supply hostname, e.g., 
 username:password@tcpaddress:tcpport/entityname?hostname=foo where 'foo' 
 would become the hostname used in the connection open frame. This is the 
 approach used by the current Qpid AMQP 1.0 JMS client.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


Re: Unexpected behaviour in test ssl.py - possible bug?

2012-11-28 Thread Ken Giusti
Hi Phil,

I think you've uncovered a bug - definitely raise a jira and assign it to me.

Now that you mention it, I'm surprised that the original version of pump() 
worked properly - seems like it would risk discarding any output not consumed 
by the input handler.Your changes to pump() should be an improvement. 

-K

- Original Message -
 Hi,
 
 We've been working on the Java SSL implementation and are seeing a
 test
 fail against proton-c but that works against proton-j.  We're not
 sure if
 the problem is in proton-c, or in our modified test, and are hoping
 someone
 who knows about proton-c's SSL implementation can give a view on this
 before we raise a Jira.
 
 One of the scenarios we wanted to cover in our testing was the case
 where
 the Transport input method leaves left-overs, e.g. when you call
 server.input() with 100 bytes of input, but it only accepts 20, as
 indicated by its return value.
 
 For example, we expect this to happen if the preceding
 client.output() call
 is told to write to a buffer sized such that its output contains a
 trailing
 *fragment* of an SSL packet, which input() won't be able to decipher.
 
 We therefore modified the pump method in
 proton/tests/proton_tests/ssl.py
 to handle this case.  In its loop, it now captures the bytes left
 over
 after calling input(), and prepends them to the input() invocation in
 the
 next iteration.  The buffer size is now a parameter so individual
 tests can
 exercise the packet fragmenting behaviour described above.
 
 We made the following change:
 
 ---
 diff --git a/tests/proton_tests/ssl.py b/tests/proton_tests/ssl.py
 index 8567b1b..237c3da 100644
 --- a/tests/proton_tests/ssl.py
 +++ b/tests/proton_tests/ssl.py
 @@ -43,13 +43,32 @@ class SslTest(common.Test):
  self.t_client = None
  self.t_server = None
 
 -def _pump(self):
 +def _pump(self, buffer_size=1024):
 +
 +Make the transport send up to buffer_size bytes (this will
 be the
 AMQP
 +header and open frame) returning a buffer containing the
 bytes
 +sent.  Transport is stateful so this will return 0 when it
 has
 +no more frames to send.
 +TODO this function is duplicated in sasl.py. Should be moved
 to a
 common place.
 +
 +out_client_leftover_by_server = 
 +out_server_leftover_by_client = 
 +i=0
  while True:
 -out_client = self.t_client.output(1024)
 -out_server = self.t_server.output(1024)
 -if out_client: self.t_server.input(out_client)
 -if out_server: self.t_client.input(out_server)
 +
 +out_client = out_client_leftover_by_server +
 self.t_client.output(buffer_size)
 +out_server = out_server_leftover_by_client +
 self.t_server.output(buffer_size)
 +
 +if out_client:
 +number_server_consumed =
 self.t_server.input(out_client)
 +out_client_leftover_by_server =
 out_client[number_server_consumed:] # if it consumed everything then
 this
 is empty
 +
 +if out_server:
 +number_client_consumed =
 self.t_client.input(out_server)
 +out_server_leftover_by_client =
 out_server[number_client_consumed:] # if it consumed everything then
 this
 is empty
 +
  if not out_client and not out_server: break
 +i=i+1
 
  def _testpath(self, file):
   Set the full path to the certificate,keyfile, etc. for
  the
 test.
 ---
 
 Several ssl tests now fail when run against proton-c, all with the
 same
 error.  This surprised us because we hadn't started playing with the
 buffer
 size yet - we were still using the default of 1024.
 
 For example, test_server_authentication gives this output:
 
 proton_tests.ssl.SslTest.test_server_authentication
 .[0xa2ca208:0]
 ERROR[-2] SSL Failure: error:1408F119:SSL
 routines:SSL3_GET_RECORD:decryption failed or bad record mac
  fail
 Error during test:  Traceback (most recent call last):
 File ./tests/proton-test, line 331, in run
   phase()
 File /home/phil/dev/proton/tests/proton_tests/ssl.py, line 166,
 in
 test_server_authentication
   self._pump()
 File /home/phil/dev/proton/tests/proton_tests/ssl.py, line 63,
 in
 _pump
   number_server_consumed = self.t_server.input(out_client)
 File /home/phil/dev/proton/proton-c/bindings/python/proton.py,
 line
 2141, in input
   return self._check(n)
 File /home/phil/dev/proton/proton-c/bindings/python/proton.py,
 line
 2115, in _check
   raise exc([%s]: %s % (err,
 pn_error_text(pn_transport_error(self._trans
   TransportException: [-2]: SSL Failure: error:1408F119:SSL
 routines:SSL3_GET_RECORD:decryption failed or bad record mac
 Totals: 1 tests, 0 passed, 0 skipped, 0 ignored, 1 failed
 
 The first pump() call in this test works fine; the failure we see 

[jira] [Created] (PROTON-171) after connection close, proton-c SSL decryption fails when left-over bytes passed to input()

2012-11-28 Thread Philip Harvey (JIRA)
Philip Harvey created PROTON-171:


 Summary: after connection close, proton-c SSL decryption fails 
when left-over bytes passed to input()
 Key: PROTON-171
 URL: https://issues.apache.org/jira/browse/PROTON-171
 Project: Qpid Proton
  Issue Type: Bug
  Components: proton-c
Reporter: Philip Harvey


We've been working on the Java SSL implementation and are seeing a test fail 
against proton-c but that works against proton-j.  We believe this is due to a 
bug in proton-c.

One of the scenarios we wanted to cover in our testing was the case where the 
Transport input method leaves left-overs, e.g. when you call server.input() 
with 100 bytes of input, but it only accepts 20, as indicated by its return 
value.  

For example, we expect this to happen if the preceding client.output() call is 
told to write to a buffer sized such that its output contains a trailing 
*fragment* of an SSL packet, which input() won't be able to decipher.

We therefore modified the pump method in proton/tests/proton_tests/ssl.py to 
handle this case.  In its loop, it now captures the bytes left over after 
calling input(), and prepends them to the input() invocation in the next 
iteration.  The buffer size is now a parameter so individual tests can exercise 
the packet fragmenting behaviour described above.

We made the following change:

{noformat}
diff --git a/tests/proton_tests/ssl.py b/tests/proton_tests/ssl.py
index 8567b1b..237c3da 100644
--- a/tests/proton_tests/ssl.py
+++ b/tests/proton_tests/ssl.py
@@ -43,13 +43,32 @@ class SslTest(common.Test):
 self.t_client = None
 self.t_server = None
 
-def _pump(self):
+def _pump(self, buffer_size=1024):
+
+Make the transport send up to buffer_size bytes (this will be the AMQP
+header and open frame) returning a buffer containing the bytes
+sent.  Transport is stateful so this will return 0 when it has
+no more frames to send.
+TODO this function is duplicated in sasl.py. Should be moved to a 
common place.
+
+out_client_leftover_by_server = 
+out_server_leftover_by_client = 
+i=0
 while True:
-out_client = self.t_client.output(1024)
-out_server = self.t_server.output(1024)
-if out_client: self.t_server.input(out_client)
-if out_server: self.t_client.input(out_server)
+
+out_client = out_client_leftover_by_server + 
self.t_client.output(buffer_size)
+out_server = out_server_leftover_by_client + 
self.t_server.output(buffer_size)
+
+if out_client:
+number_server_consumed = self.t_server.input(out_client)
+out_client_leftover_by_server = 
out_client[number_server_consumed:] # if it consumed everything then this is 
empty
+
+if out_server:
+number_client_consumed = self.t_client.input(out_server)
+out_server_leftover_by_client = 
out_server[number_client_consumed:] # if it consumed everything then this is 
empty
+
 if not out_client and not out_server: break
+i=i+1
 
 def _testpath(self, file):
  Set the full path to the certificate,keyfile, etc. for the test.
{noformat}

Several ssl tests now fail when run against proton-c, all with the same error.  
This surprised us because we hadn't started playing with the buffer size yet - 
we were still using the default of 1024.

For example, test_server_authentication gives this output:

{noformat}
proton_tests.ssl.SslTest.test_server_authentication 
.[0xa2ca208:0]
 ERROR[-2] SSL Failure: error:1408F119:SSL routines:SSL3_GET_RECORD:decryption 
failed or bad record mac
 fail
Error during test:  Traceback (most recent call last):
File ./tests/proton-test, line 331, in run
  phase()
File /home/phil/dev/proton/tests/proton_tests/ssl.py, line 166, in 
test_server_authentication
  self._pump()
File /home/phil/dev/proton/tests/proton_tests/ssl.py, line 63, in _pump
  number_server_consumed = self.t_server.input(out_client)
File /home/phil/dev/proton/proton-c/bindings/python/proton.py, line 2141, 
in input
  return self._check(n)
File /home/phil/dev/proton/proton-c/bindings/python/proton.py, line 2115, 
in _check
  raise exc([%s]: %s % (err, 
pn_error_text(pn_transport_error(self._trans
  TransportException: [-2]: SSL Failure: error:1408F119:SSL 
routines:SSL3_GET_RECORD:decryption failed or bad record mac
Totals: 1 tests, 0 passed, 0 skipped, 0 ignored, 1 failed
{noformat}

The first pump() call in this test works fine; the failure we see is when it's 
invoked again after closing the connection.

The problem is that the previous t_server.input call didn't accept *any* of the 
bytes given to it.  On the next 

[jira] [Assigned] (PROTON-171) after connection close, proton-c SSL decryption fails when left-over bytes passed to input()

2012-11-28 Thread Philip Harvey (JIRA)

 [ 
https://issues.apache.org/jira/browse/PROTON-171?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Philip Harvey reassigned PROTON-171:


Assignee: Ken Giusti

 after connection close, proton-c SSL decryption fails when left-over bytes 
 passed to input()
 

 Key: PROTON-171
 URL: https://issues.apache.org/jira/browse/PROTON-171
 Project: Qpid Proton
  Issue Type: Bug
  Components: proton-c
Reporter: Philip Harvey
Assignee: Ken Giusti

 We've been working on the Java SSL implementation and are seeing a test fail 
 against proton-c but that works against proton-j.  We believe this is due to 
 a bug in proton-c.
 One of the scenarios we wanted to cover in our testing was the case where the 
 Transport input method leaves left-overs, e.g. when you call server.input() 
 with 100 bytes of input, but it only accepts 20, as indicated by its return 
 value.  
 For example, we expect this to happen if the preceding client.output() call 
 is told to write to a buffer sized such that its output contains a trailing 
 *fragment* of an SSL packet, which input() won't be able to decipher.
 We therefore modified the pump method in proton/tests/proton_tests/ssl.py to 
 handle this case.  In its loop, it now captures the bytes left over after 
 calling input(), and prepends them to the input() invocation in the next 
 iteration.  The buffer size is now a parameter so individual tests can 
 exercise the packet fragmenting behaviour described above.
 We made the following change:
 ---
 diff --git a/tests/proton_tests/ssl.py b/tests/proton_tests/ssl.py
 index 8567b1b..237c3da 100644
 --- a/tests/proton_tests/ssl.py
 +++ b/tests/proton_tests/ssl.py
 @@ -43,13 +43,32 @@ class SslTest(common.Test):
  self.t_client = None
  self.t_server = None
  
 -def _pump(self):
 +def _pump(self, buffer_size=1024):
 +
 +Make the transport send up to buffer_size bytes (this will be the 
 AMQP
 +header and open frame) returning a buffer containing the bytes
 +sent.  Transport is stateful so this will return 0 when it has
 +no more frames to send.
 +TODO this function is duplicated in sasl.py. Should be moved to a 
 common place.
 +
 +out_client_leftover_by_server = 
 +out_server_leftover_by_client = 
 +i=0
  while True:
 -out_client = self.t_client.output(1024)
 -out_server = self.t_server.output(1024)
 -if out_client: self.t_server.input(out_client)
 -if out_server: self.t_client.input(out_server)
 +
 +out_client = out_client_leftover_by_server + 
 self.t_client.output(buffer_size)
 +out_server = out_server_leftover_by_client + 
 self.t_server.output(buffer_size)
 +
 +if out_client:
 +number_server_consumed = self.t_server.input(out_client)
 +out_client_leftover_by_server = 
 out_client[number_server_consumed:] # if it consumed everything then this is 
 empty
 +
 +if out_server:
 +number_client_consumed = self.t_client.input(out_server)
 +out_server_leftover_by_client = 
 out_server[number_client_consumed:] # if it consumed everything then this is 
 empty
 +
  if not out_client and not out_server: break
 +i=i+1
  
  def _testpath(self, file):
   Set the full path to the certificate,keyfile, etc. for the test.
 ---
 Several ssl tests now fail when run against proton-c, all with the same 
 error.  This surprised us because we hadn't started playing with the buffer 
 size yet - we were still using the default of 1024.
 For example, test_server_authentication gives this output:
 ---
 proton_tests.ssl.SslTest.test_server_authentication 
 .[0xa2ca208:0]
  ERROR[-2] SSL Failure: error:1408F119:SSL 
 routines:SSL3_GET_RECORD:decryption failed or bad record mac
  fail
 Error during test:  Traceback (most recent call last):
 File ./tests/proton-test, line 331, in run
   phase()
 File /home/phil/dev/proton/tests/proton_tests/ssl.py, line 166, in 
 test_server_authentication
   self._pump()
 File /home/phil/dev/proton/tests/proton_tests/ssl.py, line 63, in _pump
   number_server_consumed = self.t_server.input(out_client)
 File /home/phil/dev/proton/proton-c/bindings/python/proton.py, line 
 2141, in input
   return self._check(n)
 File /home/phil/dev/proton/proton-c/bindings/python/proton.py, line 
 2115, in _check
   raise exc([%s]: %s % (err, 
 pn_error_text(pn_transport_error(self._trans
   TransportException: [-2]: SSL Failure: error:1408F119:SSL 
 

Re: Unexpected behaviour in test ssl.py - possible bug?

2012-11-28 Thread Phil Harvey
Hi Ken,

Thanks for looking into it. I've raised
https://issues.apache.org/jira/browse/PROTON-171 and assigned it to you.

Phil
On Nov 28, 2012 6:19 PM, Ken Giusti kgiu...@redhat.com wrote:

 Hi Phil,

 I think you've uncovered a bug - definitely raise a jira and assign it to
 me.

 Now that you mention it, I'm surprised that the original version of pump()
 worked properly - seems like it would risk discarding any output not
 consumed by the input handler.Your changes to pump() should be an
 improvement.

 -K

 - Original Message -
  Hi,
 
  We've been working on the Java SSL implementation and are seeing a
  test
  fail against proton-c but that works against proton-j.  We're not
  sure if
  the problem is in proton-c, or in our modified test, and are hoping
  someone
  who knows about proton-c's SSL implementation can give a view on this
  before we raise a Jira.
 
  One of the scenarios we wanted to cover in our testing was the case
  where
  the Transport input method leaves left-overs, e.g. when you call
  server.input() with 100 bytes of input, but it only accepts 20, as
  indicated by its return value.
 
  For example, we expect this to happen if the preceding
  client.output() call
  is told to write to a buffer sized such that its output contains a
  trailing
  *fragment* of an SSL packet, which input() won't be able to decipher.
 
  We therefore modified the pump method in
  proton/tests/proton_tests/ssl.py
  to handle this case.  In its loop, it now captures the bytes left
  over
  after calling input(), and prepends them to the input() invocation in
  the
  next iteration.  The buffer size is now a parameter so individual
  tests can
  exercise the packet fragmenting behaviour described above.
 
  We made the following change:
 
  ---
  diff --git a/tests/proton_tests/ssl.py b/tests/proton_tests/ssl.py
  index 8567b1b..237c3da 100644
  --- a/tests/proton_tests/ssl.py
  +++ b/tests/proton_tests/ssl.py
  @@ -43,13 +43,32 @@ class SslTest(common.Test):
   self.t_client = None
   self.t_server = None
 
  -def _pump(self):
  +def _pump(self, buffer_size=1024):
  +
  +Make the transport send up to buffer_size bytes (this will
  be the
  AMQP
  +header and open frame) returning a buffer containing the
  bytes
  +sent.  Transport is stateful so this will return 0 when it
  has
  +no more frames to send.
  +TODO this function is duplicated in sasl.py. Should be moved
  to a
  common place.
  +
  +out_client_leftover_by_server = 
  +out_server_leftover_by_client = 
  +i=0
   while True:
  -out_client = self.t_client.output(1024)
  -out_server = self.t_server.output(1024)
  -if out_client: self.t_server.input(out_client)
  -if out_server: self.t_client.input(out_server)
  +
  +out_client = out_client_leftover_by_server +
  self.t_client.output(buffer_size)
  +out_server = out_server_leftover_by_client +
  self.t_server.output(buffer_size)
  +
  +if out_client:
  +number_server_consumed =
  self.t_server.input(out_client)
  +out_client_leftover_by_server =
  out_client[number_server_consumed:] # if it consumed everything then
  this
  is empty
  +
  +if out_server:
  +number_client_consumed =
  self.t_client.input(out_server)
  +out_server_leftover_by_client =
  out_server[number_client_consumed:] # if it consumed everything then
  this
  is empty
  +
   if not out_client and not out_server: break
  +i=i+1
 
   def _testpath(self, file):
Set the full path to the certificate,keyfile, etc. for
   the
  test.
  ---
 
  Several ssl tests now fail when run against proton-c, all with the
  same
  error.  This surprised us because we hadn't started playing with the
  buffer
  size yet - we were still using the default of 1024.
 
  For example, test_server_authentication gives this output:
 
  proton_tests.ssl.SslTest.test_server_authentication
 
 .[0xa2ca208:0]
  ERROR[-2] SSL Failure: error:1408F119:SSL
  routines:SSL3_GET_RECORD:decryption failed or bad record mac
   fail
  Error during test:  Traceback (most recent call last):
  File ./tests/proton-test, line 331, in run
phase()
  File /home/phil/dev/proton/tests/proton_tests/ssl.py, line 166,
  in
  test_server_authentication
self._pump()
  File /home/phil/dev/proton/tests/proton_tests/ssl.py, line 63,
  in
  _pump
number_server_consumed = self.t_server.input(out_client)
  File /home/phil/dev/proton/proton-c/bindings/python/proton.py,
  line
  2141, in input
return self._check(n)
  File /home/phil/dev/proton/proton-c/bindings/python/proton.py,
  line
  2115, in _check
raise 

amqp redirect scenario details

2012-11-28 Thread Affan Dar
Over the last few weeks we have created a number of JIRAs related to SSL
resumption and redirects etc. All of these allude to some master redirect
scenario but the scenario itself perhaps wasn't clear. Hopefully this note
should give folks some more context as to the motivation and details for
this scenario.

 

We have a multi-tenant cloud messaging service that supports AMQP 1-0. One
of our customers is building bandwidth constrained devices which require
long lived connections to our service with the minimum amount of protocol
chatter. There are potentially a large number of devices involved so byte
overhead needs to be minimized, even an empty 8 byte keep-alive frame every
5 minutes, is quite prohibitive. We have recommended the customer use AMQP
1.0 with Proton-C in their Linux based devices.

 

Now our service uses our standard cloud (Azure) infrastructure components
and hence inherits some of the constraints of these components. Specifically
the Azure load balancer, which this service sits behind, aggressively kills
connections if there is no traffic for more than 5 minutes. The service
however does have direct IP endpoints which are connectable but are dynamic.


 

To satisfy the customer scenario and given our constraints, we need the
client to connect to the well-known DNS name for the load balancer VIP and
somehow redirect the client to that machine's direct IP address to work
around the load balancer's idle connection limitation. AMQP redirection is a
perfect fit for this. 

 

Given this background, here is how the complete redirect scenario works out:

 

1.  Client establishes a TCP connection to the AMQP endpoint

2.  Regular SSL/TLS session negotiation happens which involves a number of
round trips between client/server

3.  Client/Server do the SASL-PLAIN dance

4.  Client sends AMQP open frame with open.hostname set to the AMQP endpoint
address from (1)

5.  Server sends back a close frame with an AMQP redirect error, this
redirect error will contain the direct IP address of the same node

6.  Client establishes a TCP connection to the direct IP

7.  SSL resume is used to re-establish the TLS session

8.  Client/Server do the SASL-PLAIN dance

9.  Client sends AMQP open frame with open.hostname set to the AMQP endpoint
address from (1) above

10.The server sends back a successful Open

11.At this point AMQP Connection establishment is complete. 

 

The client will periodically disconnect due to various reasons beyond our
control. The key here is to let them reconnect with minimal byte overhead:

 

1.  Client should reconnect to the direct IP using steps 6-11 above.

2.  If the connection to the direct IP fails N times then client should fall
back to the standard load balancer address. SSL session resume may be
possible in some scenarios, but full SSL negotiation may be required.

 

HTH!

 

Thanks



[jira] [Resolved] (PROTON-65) Provide a AMQP 1.0 Message to JMS Message mapping logic/module

2012-11-28 Thread Ted Ross (JIRA)

 [ 
https://issues.apache.org/jira/browse/PROTON-65?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ted Ross resolved PROTON-65.


   Resolution: Fixed
Fix Version/s: 0.3

 Provide a AMQP 1.0 Message to JMS Message mapping logic/module
 --

 Key: PROTON-65
 URL: https://issues.apache.org/jira/browse/PROTON-65
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-j
Reporter: Hiram Chirino
Assignee: Rob Godfrey
 Fix For: 0.3

 Attachments: PROTON-65.patch


 Having a easy/consistent way to transform a JMS message to an AMQP message 
 and back would be super handy.  Having that logic live in proton would help 
 make that mapping more standardized as different client and sever 
 implementations can just re-use the logic.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Resolved] (PROTON-22) Add optional module that provides HawtDispatch integration.

2012-11-28 Thread Ted Ross (JIRA)

 [ 
https://issues.apache.org/jira/browse/PROTON-22?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ted Ross resolved PROTON-22.


   Resolution: Fixed
Fix Version/s: 0.3

 Add optional module that provides HawtDispatch integration.
 ---

 Key: PROTON-22
 URL: https://issues.apache.org/jira/browse/PROTON-22
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-j
Reporter: Hiram Chirino
 Fix For: 0.3

 Attachments: PROTON-22-v5.patch


 HawtDispatch is a GCD style threading and IO handling framework.  Would be 
 nice if proton had nice integration /w it.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-168) Support for building on OS X

2012-11-28 Thread Andrew Stitcher (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-168?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13505958#comment-13505958
 ] 

Andrew Stitcher commented on PROTON-168:


I've made a couple of changes to the source tree which improve some of the 
issues noted here:
(r1414960  r1414961)
The code still won't compile on OS-X but it should now at least explain why it 
won't!



 Support for building on OS X
 

 Key: PROTON-168
 URL: https://issues.apache.org/jira/browse/PROTON-168
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
 Environment: Mac OS X Lion
Reporter: Andy Goldstein
Priority: Minor
 Attachments: proton-168.patch, PROTON-168-v2.patch


 I did some quick hacky work to get proton-c to compile on my Mac running 
 Lion.  I also have homebrew installed and use that to supply any libraries 
 that are necessary but not included by default on the Mac.  I'm attaching my 
 quick patch, and it would be great if someone could take it and update it so 
 it's more robust and commit-quality :-)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-168) Support for building on OS X

2012-11-28 Thread Andrew Stitcher (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-168?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13505960#comment-13505960
 ] 

Andrew Stitcher commented on PROTON-168:


Note that the patch attached here doesn't correctly fix the MSG_NOSIGPIPE issue 
as it just defines the macro to be SO_NOSIGPIPE which is not used in the same 
way:

MSG_NOSIGPIPE is used as a flag value to send()
SO_NOSIGPIPE is used to set a socket option with setsockopt()

This patch will compile but it won't have the effect of avoiding SIGPIPE.

 Support for building on OS X
 

 Key: PROTON-168
 URL: https://issues.apache.org/jira/browse/PROTON-168
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
 Environment: Mac OS X Lion
Reporter: Andy Goldstein
Priority: Minor
 Attachments: proton-168.patch, PROTON-168-v2.patch


 I did some quick hacky work to get proton-c to compile on my Mac running 
 Lion.  I also have homebrew installed and use that to supply any libraries 
 that are necessary but not included by default on the Mac.  I'm attaching my 
 quick patch, and it would be great if someone could take it and update it so 
 it's more robust and commit-quality :-)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-168) Support for building on OS X

2012-11-28 Thread Hiram Chirino (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-168?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13505963#comment-13505963
 ] 

Hiram Chirino commented on PROTON-168:
--

Running cmake on OS X now results in: 

- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - not found
-- Looking for clock_gettime
-- Looking for clock_gettime - not found.
CMake Error at CMakeLists.txt:116 (message):
  clock_gettime() not found


 Support for building on OS X
 

 Key: PROTON-168
 URL: https://issues.apache.org/jira/browse/PROTON-168
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
 Environment: Mac OS X Lion
Reporter: Andy Goldstein
Priority: Minor
 Attachments: proton-168.patch, PROTON-168-v2.patch


 I did some quick hacky work to get proton-c to compile on my Mac running 
 Lion.  I also have homebrew installed and use that to supply any libraries 
 that are necessary but not included by default on the Mac.  I'm attaching my 
 quick patch, and it would be great if someone could take it and update it so 
 it's more robust and commit-quality :-)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (PROTON-168) Support for building on OS X

2012-11-28 Thread Andrew Stitcher (JIRA)

[ 
https://issues.apache.org/jira/browse/PROTON-168?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13505967#comment-13505967
 ] 

Andrew Stitcher commented on PROTON-168:


Cool - that's the effect I was expecting - it being slightly better to explain 
what is wrong than to error during the compilation!

 Support for building on OS X
 

 Key: PROTON-168
 URL: https://issues.apache.org/jira/browse/PROTON-168
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
 Environment: Mac OS X Lion
Reporter: Andy Goldstein
Priority: Minor
 Attachments: proton-168.patch, PROTON-168-v2.patch


 I did some quick hacky work to get proton-c to compile on my Mac running 
 Lion.  I also have homebrew installed and use that to supply any libraries 
 that are necessary but not included by default on the Mac.  I'm attaching my 
 quick patch, and it would be great if someone could take it and update it so 
 it's more robust and commit-quality :-)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Updated] (PROTON-168) Support for building on OS X

2012-11-28 Thread Hiram Chirino (JIRA)

 [ 
https://issues.apache.org/jira/browse/PROTON-168?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hiram Chirino updated PROTON-168:
-

Attachment: clock.patch

Here's a patch that incorporates Mr Goldstein's OS X clock handling.  Would 
that work? 

 Support for building on OS X
 

 Key: PROTON-168
 URL: https://issues.apache.org/jira/browse/PROTON-168
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
 Environment: Mac OS X Lion
Reporter: Andy Goldstein
Priority: Minor
 Attachments: clock.patch, proton-168.patch, PROTON-168-v2.patch


 I did some quick hacky work to get proton-c to compile on my Mac running 
 Lion.  I also have homebrew installed and use that to supply any libraries 
 that are necessary but not included by default on the Mac.  I'm attaching my 
 quick patch, and it would be great if someone could take it and update it so 
 it's more robust and commit-quality :-)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Updated] (PROTON-168) Support for building on OS X

2012-11-28 Thread Hiram Chirino (JIRA)

 [ 
https://issues.apache.org/jira/browse/PROTON-168?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hiram Chirino updated PROTON-168:
-

Attachment: nowerror.patch

and here's a patch to disable -Werror on OSX

 Support for building on OS X
 

 Key: PROTON-168
 URL: https://issues.apache.org/jira/browse/PROTON-168
 Project: Qpid Proton
  Issue Type: New Feature
  Components: proton-c
 Environment: Mac OS X Lion
Reporter: Andy Goldstein
Priority: Minor
 Attachments: clock.patch, nowerror.patch, proton-168.patch, 
 PROTON-168-v2.patch


 I did some quick hacky work to get proton-c to compile on my Mac running 
 Lion.  I also have homebrew installed and use that to supply any libraries 
 that are necessary but not included by default on the Mac.  I'm attaching my 
 quick patch, and it would be great if someone could take it and update it so 
 it's more robust and commit-quality :-)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


PROTON - amqp 1.0 support

2012-11-28 Thread Mary Hinton
Hi,

I'm trying to use  the optional amqp 1.0 support for qpid within cmake, but
I get the following message in debug mode:

CMake Error at src/amqp.cmake:38 (message):

  Qpid proton not found, required for amqp 1.0 support.

 

I have the environment system variables - PROTON_HOME and PROJECT_SOURCE_DIR
set. Does anyone know what else I might need to set?

 

I'm working in Windows and have a Windows version of proton working. I also
had a qpid windows project setup, but I'm trying to setup the latest qpid
code with amqp 1.0 support.

 

Thanks,

Mary