gemmellr commented on a change in pull request #2847: ARTEMIS-2494: [AMQP] Allow Modified disposition to be used signal address full to a sending peer URL: https://github.com/apache/activemq-artemis/pull/2847#discussion_r327730179
########## File path: artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerReceiverContext.java ########## @@ -326,6 +325,37 @@ private void actualDelivery(Delivery delivery, Receiver receiver, ReadableBuffer } } + private DeliveryState determineDeliveryState(final Source source, final boolean useModified, final Exception e) { + Outcome defaultOutcome = getEffectiveDefaultOutcome(source); + if (e instanceof ActiveMQAddressFullException && useModified && + (outcomeSupported(source, Modified.DESCRIPTOR_SYMBOL) || defaultOutcome instanceof Modified)) { + Modified modified = new Modified(); + modified.setDeliveryFailed(true); + modified.setUndeliverableHere(false); + return modified; + } else { + if (outcomeSupported(source, Rejected.DESCRIPTOR_SYMBOL) || defaultOutcome instanceof Rejected) { + ErrorCondition condition = new ErrorCondition(); + + // Set condition + if (e instanceof ActiveMQSecurityException) { + condition.setCondition(AmqpError.UNAUTHORIZED_ACCESS); + } else { + condition.setCondition(Symbol.valueOf("failed")); + } + condition.setDescription(e.getMessage()); + + Rejected rejected = new Rejected(); + rejected.setError(condition); + return rejected; + } else if (source.getDefaultOutcome() instanceof DeliveryState) { + return ((DeliveryState) source.getDefaultOutcome()); + } else { + return Accepted.getInstance(); Review comment: At least some of the Proton 'client' bindings (which I already raised a JIRA against), perhaps AMQP.net lite (though its lower level and probably expected for you to configure it), probably Dispatch...and I'm sure there will be others. I'd say I'm currently more aware of things not setting these bits, or likely not to be, than I am those that actually are. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services