+1 ----- Original Message ----- > From: "Alan Conway" <acon...@redhat.com> > To: "Andrew Stitcher" <astit...@redhat.com>, "Clifford Jansen" > <cjan...@redhat.com>, "Justin Ross" > <jr...@redhat.com>, "Gordon Sim" <g...@redhat.com>, users@qpid.apache.org > Sent: Tuesday, November 28, 2017 2:34:28 PM > Subject: Correct behavior for message delivery when receiver link is locally > closed > > I noticed a discrepancy on how PN_DELIVERY is handled by different bindings > > 1. C++ - if (link is locally closed and auto_accept is set) { release the > message } else { call on_message } > 2. Python - if (link is locally closed) { if (auto_accept is set) release > the message} else call on_message > 3. Go always calls on_message > > I think 1. is correct. auto_accept=true avoids surprising messages after > receiver.close() has been called, and releases the messages politely. > auto_accept=false gives the application complete control. > > 2. completely drops messages after a local close - no release, no > settlement, no notice to the application. This seems wrong. > > In particular if you want to close close a link but process all messages > that were "on the way" then the natural pattern is to send detach and > process all messages till you get the remote detach back/ 2. makes this > impossible as the binding will drop messages after the local detach. 1. > means that if auto_accept=false the application is informed of *all* > messages incoming regardless of local link state which means the app can > decide what to do - accept or release. > > Thoughts? I'll fix them all to do 1. if nobody raises counter arguments. > > Cheers, > Alan. >
--------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org For additional commands, e-mail: users-h...@qpid.apache.org