This is an automated email from the ASF dual-hosted git repository. gmurthy 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 37a6ca1 DISPATCH-2054: Set tracking_addr on deliveries to zero since those addresses have already been freed. This closes #1128. 37a6ca1 is described below commit 37a6ca1fbe486d1eddb7360fc0b73a367b4ea01d Author: Ganesh Murthy <gmur...@apache.org> AuthorDate: Thu Apr 15 18:07:45 2021 -0400 DISPATCH-2054: Set tracking_addr on deliveries to zero since those addresses have already been freed. This closes #1128. --- src/router_core/connections.c | 12 +++++++++--- src/router_core/router_core.c | 2 +- src/router_core/router_core_private.h | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/router_core/connections.c b/src/router_core/connections.c index a7b7b4f..5ee6453 100644 --- a/src/router_core/connections.c +++ b/src/router_core/connections.c @@ -746,7 +746,7 @@ static void qdr_generate_link_name(const char *label, char *buffer, size_t lengt } -void qdr_link_cleanup_deliveries_CT(qdr_core_t *core, qdr_connection_t *conn, qdr_link_t *link) +void qdr_link_cleanup_deliveries_CT(qdr_core_t *core, qdr_connection_t *conn, qdr_link_t *link, bool on_shutdown) { // // Clean up the lists of deliveries on this link @@ -766,6 +766,8 @@ void qdr_link_cleanup_deliveries_CT(qdr_core_t *core, qdr_connection_t *conn, qd if (d->presettled) core->dropped_presettled_deliveries++; d->where = QDR_DELIVERY_NOWHERE; + if (on_shutdown) + d->tracking_addr = 0; d->link_work = 0; d = DEQ_NEXT(d); } @@ -776,6 +778,8 @@ void qdr_link_cleanup_deliveries_CT(qdr_core_t *core, qdr_connection_t *conn, qd assert(d->where == QDR_DELIVERY_IN_UNSETTLED); d->where = QDR_DELIVERY_NOWHERE; d->link_work = 0; + if (on_shutdown) + d->tracking_addr = 0; d = DEQ_NEXT(d); } @@ -785,6 +789,8 @@ void qdr_link_cleanup_deliveries_CT(qdr_core_t *core, qdr_connection_t *conn, qd assert(d->where == QDR_DELIVERY_IN_SETTLED); d->where = QDR_DELIVERY_NOWHERE; d->link_work = 0; + if (on_shutdown) + d->tracking_addr = 0; d = DEQ_NEXT(d); } sys_mutex_unlock(conn->work_lock); @@ -1021,7 +1027,7 @@ static void qdr_link_cleanup_CT(qdr_core_t *core, qdr_connection_t *conn, qdr_li // // Clean up any remaining deliveries // - qdr_link_cleanup_deliveries_CT(core, conn, link); + qdr_link_cleanup_deliveries_CT(core, conn, link, false); // // Remove all references to this link in the connection's and owning @@ -2087,7 +2093,7 @@ static void qdr_link_inbound_detach_CT(qdr_core_t *core, qdr_action_t *action, b // // Handle the disposition of any deliveries that remain on the link // - qdr_link_cleanup_deliveries_CT(core, conn, link); + qdr_link_cleanup_deliveries_CT(core, conn, link, false); // // If the detach occurred via protocol, send a detach back. diff --git a/src/router_core/router_core.c b/src/router_core/router_core.c index 962ecef..eb95e06 100644 --- a/src/router_core/router_core.c +++ b/src/router_core/router_core.c @@ -225,7 +225,7 @@ void qdr_core_free(qdr_core_t *core) link->in_streaming_pool = false; } - qdr_link_cleanup_deliveries_CT(core, link->conn, link); + qdr_link_cleanup_deliveries_CT(core, link->conn, link, true); if (link->core_endpoint) qdrc_endpoint_do_cleanup_CT(core, link->core_endpoint); diff --git a/src/router_core/router_core_private.h b/src/router_core/router_core_private.h index 0464b4f..117580e 100644 --- a/src/router_core/router_core_private.h +++ b/src/router_core/router_core_private.h @@ -987,7 +987,7 @@ qdr_edge_t *qdr_edge(qdr_core_t *); void qdr_edge_free(qdr_edge_t *); void qdr_edge_connection_opened(qdr_edge_t *edge, qdr_connection_t *conn); void qdr_edge_connection_closed(qdr_edge_t *edge); -void qdr_link_cleanup_deliveries_CT(qdr_core_t *core, qdr_connection_t *conn, qdr_link_t *link); +void qdr_link_cleanup_deliveries_CT(qdr_core_t *core, qdr_connection_t *conn, qdr_link_t *link, bool on_shutdown); void qdr_connection_enqueue_work_CT(qdr_core_t *core, qdr_connection_t *conn, --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org