In previous versions of Proton-C, if the incoming window size was set when a
receive link was established, the send settle mode was 0 (UNSETTLED) and the
receive settle mode was 1 (RCV_SECOND). This gives the receiver at-least-once
assurance, which is what our (Azure ServiceBus) customers overwhelmingly want,
so our advice and samples emphasized that it was vital to set the incoming
window size.
With version 0.8, under the same conditions, the send settle mode is 1
(SETTLED) and the receive settle mode is 0 (RCV_FIRST) - the complete opposite
behavior from before. This scares me because if you just naively drop 0.8 into
your existing application, it builds and appears to work fine. There is no
visible indication that you've just lost your reliability assurance, and I
don't see anything about it in the release notes, either. I only stumbled
across this because I was looking at the Proton traces for unrelated reasons.
Obviously this situation can be changed with suitable use of the new
pn_messenger_set_{snd,rcv}_settle_mode APIs, and we will be updating our
samples and advice with that info. But will a customer who is just moving from
one version of Proton to another consult that advice? Especially when it
appears to just work.
--James