Repository: qpid-dispatch Updated Branches: refs/heads/master 75ebbd13a -> 9d0a684db
DISPATCH-816 - Check for existence of a connection object before procceding to handle new incoming and outgoing links AMQP_incoming/outgoing_link_handler. The connection that these links belong to might have disappeared at the time we are ready to handle links and the absence of the connection must sensed and the link creation process must not proceed. Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/9d0a684d Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/9d0a684d Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/9d0a684d Branch: refs/heads/master Commit: 9d0a684db2b632690c611b9b05988d3fe3f7ab37 Parents: 75ebbd1 Author: Ganesh Murthy <gmur...@redhat.com> Authored: Fri Sep 8 10:35:28 2017 -0400 Committer: Ganesh Murthy <gmur...@redhat.com> Committed: Fri Sep 8 10:35:28 2017 -0400 ---------------------------------------------------------------------- src/router_node.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/9d0a684d/src/router_node.c ---------------------------------------------------------------------- diff --git a/src/router_node.c b/src/router_node.c index 21d52bf..9aa2845 100644 --- a/src/router_node.c +++ b/src/router_node.c @@ -514,6 +514,12 @@ static void AMQP_disposition_handler(void* context, qd_link_t *link, pn_delivery static int AMQP_incoming_link_handler(void* context, qd_link_t *link) { qd_connection_t *conn = qd_link_connection(link); + + // The connection that this link belongs to is gone. Perhaps an AMQP close came in. + // This link handler should not continue since there is no connection. + if (conn == 0) + return 0; + qdr_connection_t *qdr_conn = (qdr_connection_t*) qd_connection_get_context(conn); char *terminus_addr = (char*)pn_terminus_get_address(pn_link_remote_target((pn_link_t *)qd_link_pn(link))); @@ -536,6 +542,12 @@ static int AMQP_incoming_link_handler(void* context, qd_link_t *link) static int AMQP_outgoing_link_handler(void* context, qd_link_t *link) { qd_connection_t *conn = qd_link_connection(link); + + // The connection that this link belongs to is gone. Perhaps an AMQP close came in. + // This link handler should not continue since there is no connection. + if (conn == 0) + return 0; + qdr_connection_t *qdr_conn = (qdr_connection_t*) qd_connection_get_context(conn); char *terminus_addr = (char*)pn_terminus_get_address(pn_link_remote_source((pn_link_t *)qd_link_pn(link))); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org