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

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


The following commit(s) were added to refs/heads/main by this push:
     new eb66aa6  DISPATCH-2236: avoid holding the delivery state lock while 
freeing delivery state
eb66aa6 is described below

commit eb66aa6592cf97aa3745d8eeaa08cec71942f2ce
Author: Kenneth Giusti <kgiu...@apache.org>
AuthorDate: Mon Aug 23 12:47:06 2021 -0400

    DISPATCH-2236: avoid holding the delivery state lock while freeing delivery 
state
    
    This closes #1347
---
 src/router_core/delivery.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/router_core/delivery.c b/src/router_core/delivery.c
index 91d99da..8a3432f 100644
--- a/src/router_core/delivery.c
+++ b/src/router_core/delivery.c
@@ -1261,13 +1261,15 @@ bool qdr_delivery_move_delivery_state_CT(qdr_delivery_t 
*dlv, qdr_delivery_t *pe
         sys_mutex_lock(peer->dispo_lock);
 
         peer->disposition = dispo;
-        if (peer->local_state) {
-            // old state not consumed by I/O thread?
-            qd_delivery_state_free(peer->local_state);
-        }
+        qd_delivery_state_t *old = peer->local_state;
         peer->local_state = dstate;
 
         sys_mutex_unlock(peer->dispo_lock);
+
+        if (old) {
+            // old state not consumed by I/O thread?
+            qd_delivery_state_free(old);
+        }
     }
 
     return !!dispo;

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to