DISPATCH-179 - Fixed memory leak of qd_parsed_field_t object in qd_core_agent_create_handler
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/0513bd68 Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/0513bd68 Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/0513bd68 Branch: refs/heads/tross-DISPATCH-179-1-QDMESSAGE-MEMLEAK Commit: 0513bd6855989e5fd5200d10634ead7d5359c7f4 Parents: f305dbf Author: Ganesh Murthy <gmur...@redhat.com> Authored: Mon Feb 29 11:00:40 2016 -0500 Committer: Ganesh Murthy <gmur...@redhat.com> Committed: Mon Feb 29 11:00:40 2016 -0500 ---------------------------------------------------------------------- src/router_core/agent.c | 22 +++++++++++++--------- src/router_core/management_agent.c | 8 +++++++- 2 files changed, 20 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/0513bd68/src/router_core/agent.c ---------------------------------------------------------------------- diff --git a/src/router_core/agent.c b/src/router_core/agent.c index c45e20e..01bcd15 100644 --- a/src/router_core/agent.c +++ b/src/router_core/agent.c @@ -115,7 +115,8 @@ void qdr_manage_create(qdr_core_t *core, } -void qdr_manage_delete(qdr_core_t *core, void *context, +void qdr_manage_delete(qdr_core_t *core, + void *context, qd_router_entity_type_t type, qd_field_iterator_t *name, qd_field_iterator_t *identity) @@ -131,7 +132,8 @@ void qdr_manage_delete(qdr_core_t *core, void *context, } -void qdr_manage_read(qdr_core_t *core, void *context, +void qdr_manage_read(qdr_core_t *core, + void *context, qd_router_entity_type_t entity_type, qd_field_iterator_t *name, qd_field_iterator_t *identity, @@ -344,14 +346,16 @@ static void qdr_manage_create_CT(qdr_core_t *core, qdr_action_t *action, bool di qd_parsed_field_t *in_body = action->args.agent.in_body; switch (query->entity_type) { - case QD_ROUTER_PROVISIONED: qdra_provisioned_create_CT(core, name, query, in_body); break; - case QD_ROUTER_CONNECTION: break; - case QD_ROUTER_LINK: break; - case QD_ROUTER_ADDRESS: break; - case QD_ROUTER_WAYPOINT: qdra_waypoint_create_CT(core, name, query, in_body); break; - case QD_ROUTER_EXCHANGE: break; - case QD_ROUTER_BINDING: break; + case QD_ROUTER_PROVISIONED: qdra_provisioned_create_CT(core, name, query, in_body); break; + case QD_ROUTER_CONNECTION: break; + case QD_ROUTER_LINK: break; + case QD_ROUTER_ADDRESS: break; + case QD_ROUTER_WAYPOINT: qdra_waypoint_create_CT(core, name, query, in_body); break; + case QD_ROUTER_EXCHANGE: break; + case QD_ROUTER_BINDING: break; } + + qd_parse_free(in_body); } http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/0513bd68/src/router_core/management_agent.c ---------------------------------------------------------------------- diff --git a/src/router_core/management_agent.c b/src/router_core/management_agent.c index 1735dd2..deef7ae 100644 --- a/src/router_core/management_agent.c +++ b/src/router_core/management_agent.c @@ -292,7 +292,13 @@ static void qd_core_agent_create_handler(qdr_core_t *core, // Call local function that creates and returns a qd_management_context_t containing the values passed in. qd_management_context_t *ctx = qd_management_context(qd_message(), msg, out_body, 0, core, operation_type, 0); - qdr_manage_create(core, ctx, entity_type, name_iter, qd_parse(qd_message_field_iterator(msg, QD_FIELD_BODY)), out_body); + qd_field_iterator_t *body_iter = qd_message_field_iterator(msg, QD_FIELD_BODY); + + qd_parsed_field_t *in_body = qd_parse(body_iter); + + qdr_manage_create(core, ctx, entity_type, name_iter, in_body, out_body); + + qd_field_iterator_free(body_iter); } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org