summaryrefslogtreecommitdiff
path: root/qpid/extras/dispatch/src/router_node.c
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2013-10-08 20:33:27 +0000
committerTed Ross <tross@apache.org>2013-10-08 20:33:27 +0000
commit3731f119921b4e5527fd15e5b3575b63edf8ccb2 (patch)
tree77345460fbcd578e4ed1569b7ca20677511509b1 /qpid/extras/dispatch/src/router_node.c
parent2cc9ee2ded5e5987cbf6897b5dea5e4a49d793ec (diff)
downloadqpid-python-3731f119921b4e5527fd15e5b3575b63edf8ccb2.tar.gz
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
Diffstat (limited to 'qpid/extras/dispatch/src/router_node.c')
-rw-r--r--qpid/extras/dispatch/src/router_node.c5
1 files changed, 2 insertions, 3 deletions
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 {
//