You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kg...@apache.org on 2016/04/01 20:57:58 UTC
qpid-dispatch git commit: DISPATCH-177: (partial) cleanup a few
memory leaks.
Repository: qpid-dispatch
Updated Branches:
refs/heads/master e0f6c6151 -> 31220576d
DISPATCH-177: (partial) cleanup a few memory leaks.
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/31220576
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/31220576
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/31220576
Branch: refs/heads/master
Commit: 31220576d54c6c4665d92060db71a883324394b0
Parents: e0f6c61
Author: Kenneth Giusti <kg...@redhat.com>
Authored: Fri Apr 1 13:46:00 2016 -0400
Committer: Kenneth Giusti <kg...@redhat.com>
Committed: Fri Apr 1 14:57:31 2016 -0400
----------------------------------------------------------------------
src/posix/driver.c | 1 +
src/router_config.c | 5 +++++
src/router_core/management_agent.c | 4 +++-
src/server.c | 21 ++++++++++-----------
4 files changed, 19 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/31220576/src/posix/driver.c
----------------------------------------------------------------------
diff --git a/src/posix/driver.c b/src/posix/driver.c
index 98e1be4..3d4bbca 100644
--- a/src/posix/driver.c
+++ b/src/posix/driver.c
@@ -659,6 +659,7 @@ void qdpn_connector_free(qdpn_connector_t *ctor)
if (!ctor) return;
if (ctor->driver) qdpn_driver_remove_connector(ctor->driver, ctor);
+ pn_transport_unbind(ctor->transport);
pn_transport_free(ctor->transport);
ctor->transport = NULL;
if (ctor->connection) pn_class_decref(PN_OBJECT, ctor->connection);
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/31220576/src/router_config.c
----------------------------------------------------------------------
diff --git a/src/router_config.c b/src/router_config.c
index 962b5b4..cae7e82 100644
--- a/src/router_config.c
+++ b/src/router_config.c
@@ -93,6 +93,7 @@ qd_error_t qd_router_configure_fixed_address(qd_router_t *router, qd_entity_t *e
qd_field_iterator_t *iter = qd_field_iterator_buffer(DEQ_HEAD(buffers), 0, length);
qd_parsed_field_t *in_body = qd_parse(iter);
+ qd_field_iterator_free(iter);
qdr_manage_create(router->router_core, 0, QD_ROUTER_CONFIG_ADDRESS, 0, in_body, 0);
@@ -173,6 +174,7 @@ static void qd_router_add_link_route(qdr_core_t *core, const char *prefix, const
qd_field_iterator_t *iter = qd_field_iterator_buffer(DEQ_HEAD(buffers), 0, length);
qd_parsed_field_t *in_body = qd_parse(iter);
+ qd_field_iterator_free(iter);
qdr_manage_create(core, 0, QD_ROUTER_CONFIG_LINK_ROUTE, 0, in_body, 0);
}
@@ -262,6 +264,7 @@ qd_error_t qd_router_configure_address(qd_router_t *router, qd_entity_t *entity)
qd_field_iterator_t *iter = qd_field_iterator_buffer(DEQ_HEAD(buffers), 0, length);
qd_parsed_field_t *in_body = qd_parse(iter);
+ qd_field_iterator_free(iter);
qdr_manage_create(router->router_core, 0, QD_ROUTER_CONFIG_ADDRESS, 0, in_body, 0);
@@ -334,6 +337,7 @@ qd_error_t qd_router_configure_link_route(qd_router_t *router, qd_entity_t *enti
qd_field_iterator_t *iter = qd_field_iterator_buffer(DEQ_HEAD(buffers), 0, length);
qd_parsed_field_t *in_body = qd_parse(iter);
+ qd_field_iterator_free(iter);
qdr_manage_create(router->router_core, 0, QD_ROUTER_CONFIG_LINK_ROUTE, 0, in_body, 0);
@@ -409,6 +413,7 @@ qd_error_t qd_router_configure_auto_link(qd_router_t *router, qd_entity_t *entit
qd_field_iterator_t *iter = qd_field_iterator_buffer(DEQ_HEAD(buffers), 0, length);
qd_parsed_field_t *in_body = qd_parse(iter);
+ qd_field_iterator_free(iter);
qdr_manage_create(router->router_core, 0, QD_ROUTER_CONFIG_AUTO_LINK, 0, in_body, 0);
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/31220576/src/router_core/management_agent.c
----------------------------------------------------------------------
diff --git a/src/router_core/management_agent.c b/src/router_core/management_agent.c
index 19e84dd..f39c8c7 100644
--- a/src/router_core/management_agent.c
+++ b/src/router_core/management_agent.c
@@ -318,7 +318,9 @@ static void qd_core_agent_update_handler(qdr_core_t *core,
qd_management_context_t *ctx = qd_management_context(qd_message(), msg, out_body, 0, core, operation_type, 0);
- qd_parsed_field_t *in_body= qd_parse(qd_message_field_iterator(msg, QD_FIELD_BODY));
+ qd_field_iterator_t *iter = qd_message_field_iterator(msg, QD_FIELD_BODY);
+ qd_parsed_field_t *in_body= qd_parse(iter);
+ qd_field_iterator_free(iter);
qdr_manage_update(core, ctx, entity_type, name_iter, identity_iter, in_body, out_body);
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/31220576/src/server.c
----------------------------------------------------------------------
diff --git a/src/server.c b/src/server.c
index e9a6e01..2b5e5c9 100644
--- a/src/server.c
+++ b/src/server.c
@@ -86,6 +86,16 @@ static void free_qd_connection(qd_connection_t *ctx)
free (ctx->policy_settings);
ctx->policy_settings = 0;
}
+ if (ctx->pn_conn) {
+ pn_connection_set_context(ctx->pn_conn, 0);
+ pn_decref(ctx->pn_conn);
+ ctx->pn_conn = NULL;
+ }
+ if (ctx->collector) {
+ pn_collector_free(ctx->collector);
+ ctx->collector = NULL;
+ }
+
free_qd_connection_t(ctx);
}
@@ -730,7 +740,6 @@ static void *thread_run(void *arg)
qd_thread_t *thread = (qd_thread_t*) arg;
qd_work_item_t *work;
qdpn_connector_t *cxtr;
- pn_connection_t *conn;
qd_connection_t *ctx;
int error;
int poll_result;
@@ -937,10 +946,6 @@ static void *thread_run(void *arg)
qd_entity_cache_remove(QD_CONNECTION_TYPE, ctx);
//
// Connector is closed. Free the context and the connector.
- //
- conn = qdpn_connector_connection(cxtr);
-
- //
// If this is a dispatch connector, schedule the re-connect timer
//
if (ctx->connector) {
@@ -957,12 +962,6 @@ static void *thread_run(void *arg)
}
qdpn_connector_free(cxtr);
- if (conn) {
- pn_connection_set_context(conn, 0);
- pn_decref(conn);
- }
- if (ctx->collector)
- pn_collector_free(ctx->collector);
invoke_deferred_calls(ctx, true); // Discard any pending deferred calls
sys_mutex_free(ctx->deferred_call_lock);
free_qd_connection(ctx);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org