You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gm...@apache.org on 2016/03/01 18:28:25 UTC

[3/3] qpid-dispatch git commit: DISPATCH-179 - Fixed memory leak of qd_parsed_field_t object in qd_core_agent_create_handler

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 <gm...@redhat.com>
Authored: Mon Feb 29 11:00:40 2016 -0500
Committer: Ganesh Murthy <gm...@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-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org