This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-proton.git

commit e1695bc5e1013f65777af8ef2a92a62b9609e047
Author: Andrew Stitcher <[email protected]>
AuthorDate: Sun Apr 26 19:45:29 2026 -0400

    PROTON-2873: Make it easier to switch between disposition types
    
    Add pn_disposition_clear to exposed API so that you can set a
    change the disposition type and parameters of a disposition that is
    already set using the new disposition API.
    
    Doing this is an unusual case, but occurs when you have an incoming
    delivery inside a transaction which has been transactionally
    acknowledged but the transaction aborts or commit fails and now needs to
    be have a modified disposition.
---
 c/include/proton/disposition.h | 7 +++++++
 c/src/core/engine-internal.h   | 2 --
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/c/include/proton/disposition.h b/c/include/proton/disposition.h
index 7d7fdee3b..ee4b27966 100644
--- a/c/include/proton/disposition.h
+++ b/c/include/proton/disposition.h
@@ -124,6 +124,13 @@ PN_EXTERN uint64_t pn_disposition_type(pn_disposition_t 
*disposition);
  */
 PN_EXTERN const char *pn_disposition_type_name(uint64_t disposition_type);
 
+/**
+ * Clear a disposition.
+ *
+ * @param[in] disposition a disposition object
+ */
+PN_EXTERN void pn_disposition_clear(pn_disposition_t *disposition);
+
 /**
  * Access the condition object associated with a disposition.
  *
diff --git a/c/src/core/engine-internal.h b/c/src/core/engine-internal.h
index 5bab0f7bd..76cabbdc4 100644
--- a/c/src/core/engine-internal.h
+++ b/c/src/core/engine-internal.h
@@ -427,8 +427,6 @@ void pn_transport_sasl_init(pn_transport_t *transport);
 void pn_condition_init(pn_condition_t *condition);
 void pn_condition_tini(pn_condition_t *condition);
 
-void pn_disposition_clear(pn_disposition_t *ds);
-
 void pn_modified(pn_connection_t *connection, pn_endpoint_t *endpoint, bool 
emit);
 void pn_real_settle(pn_delivery_t *delivery);  // will free delivery if link 
is freed
 void pn_clear_tpwork(pn_delivery_t *delivery);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to