From 3731f119921b4e5527fd15e5b3575b63edf8ccb2 Mon Sep 17 00:00:00 2001 From: Ted Ross Date: Tue, 8 Oct 2013 20:33:27 +0000 Subject: QPID-5218 - Fixed crash caused by fanned-out non-presettled messages. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1530415 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/extras/dispatch/src/router_node.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'qpid/extras/dispatch/src') diff --git a/qpid/extras/dispatch/src/router_node.c b/qpid/extras/dispatch/src/router_node.c index de69e21605..8efbf6a2af 100644 --- a/qpid/extras/dispatch/src/router_node.c +++ b/qpid/extras/dispatch/src/router_node.c @@ -547,7 +547,7 @@ static void router_rx_handler(void* context, dx_link_t *link, dx_delivery_t *del DEQ_INSERT_TAIL(dest_link->msg_fifo, re); fanout++; - if (fanout == 1) + if (fanout == 1 && !dx_delivery_settled(delivery)) re->delivery = delivery; addr->deliveries_transit++; @@ -569,8 +569,7 @@ static void router_rx_handler(void* context, dx_link_t *link, dx_delivery_t *del dx_delivery_free(delivery, PN_ACCEPTED); } else if (fanout == 0) { dx_delivery_free(delivery, PN_RELEASED); - } else if (fanout > 1) - dx_delivery_free(delivery, PN_ACCEPTED); + } } } else { // -- cgit v1.2.1