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 2018/08/07 15:19:28 UTC
qpid-dispatch git commit: DISPATCH-1097 - Added code to fix issues
reported by Coverity. This closes #354.
Repository: qpid-dispatch
Updated Branches:
refs/heads/master 83f5d524a -> e545dd9cc
DISPATCH-1097 - Added code to fix issues reported by Coverity. This closes #354.
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/e545dd9c
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/e545dd9c
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/e545dd9c
Branch: refs/heads/master
Commit: e545dd9cc3c3bc967e04752b6c28414987a86e63
Parents: 83f5d52
Author: Ganesh Murthy <gm...@redhat.com>
Authored: Mon Aug 6 21:36:01 2018 -0400
Committer: Ganesh Murthy <gm...@redhat.com>
Committed: Tue Aug 7 11:16:58 2018 -0400
----------------------------------------------------------------------
src/router_core/route_control.c | 8 +++++++-
src/router_core/router_core_private.h | 16 ++++++++++++++++
src/router_core/terminus.c | 15 ---------------
src/router_node.c | 8 ++++++++
src/server.c | 12 +++++++-----
5 files changed, 38 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/e545dd9c/src/router_core/route_control.c
----------------------------------------------------------------------
diff --git a/src/router_core/route_control.c b/src/router_core/route_control.c
index 0bb916e..4de2ba3 100644
--- a/src/router_core/route_control.c
+++ b/src/router_core/route_control.c
@@ -18,6 +18,7 @@
*/
#include "route_control.h"
+#include "router_core_private.h"
#include <inttypes.h>
#include <stdio.h>
#include <qpid/dispatch/iterator.h>
@@ -242,13 +243,18 @@ static void qdr_auto_link_activate_CT(qdr_core_t *core, qdr_auto_link_t *al, qdr
if (key || al->external_addr) {
if (al->external_addr) {
qdr_terminus_set_address(term, al->external_addr);
- al->internal_addr = &key[2];
+ if (key)
+ al->internal_addr = &key[2];
} else
qdr_terminus_set_address(term, &key[2]); // truncate the "Mp" annotation (where p = phase)
al->link = qdr_create_link_CT(core, conn, QD_LINK_ENDPOINT, al->dir, source, target);
al->link->auto_link = al;
al->state = QDR_AUTO_LINK_STATE_ATTACHING;
}
+ else {
+ free_qdr_terminus_t(source);
+ free_qdr_terminus_t(target);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/e545dd9c/src/router_core/router_core_private.h
----------------------------------------------------------------------
diff --git a/src/router_core/router_core_private.h b/src/router_core/router_core_private.h
index d493037..c82f3c8 100644
--- a/src/router_core/router_core_private.h
+++ b/src/router_core/router_core_private.h
@@ -749,6 +749,22 @@ struct qdr_core_t {
};
+struct qdr_terminus_t {
+ qdr_field_t *address;
+ pn_durability_t durability;
+ pn_expiry_policy_t expiry_policy;
+ pn_seconds_t timeout;
+ bool dynamic;
+ bool coordinator;
+ pn_distribution_mode_t distribution_mode;
+ pn_data_t *properties;
+ pn_data_t *filter;
+ pn_data_t *outcomes;
+ pn_data_t *capabilities;
+};
+
+ALLOC_DECLARE(qdr_terminus_t);
+
void *router_core_thread(void *arg);
uint64_t qdr_identifier(qdr_core_t* core);
void qdr_management_agent_on_message(void *context, qd_message_t *msg, int link_id, int cost);
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/e545dd9c/src/router_core/terminus.c
----------------------------------------------------------------------
diff --git a/src/router_core/terminus.c b/src/router_core/terminus.c
index 30623d1..a717ae5 100644
--- a/src/router_core/terminus.c
+++ b/src/router_core/terminus.c
@@ -21,21 +21,6 @@
#include <strings.h>
#include <stdio.h>
-struct qdr_terminus_t {
- qdr_field_t *address;
- pn_durability_t durability;
- pn_expiry_policy_t expiry_policy;
- pn_seconds_t timeout;
- bool dynamic;
- bool coordinator;
- pn_distribution_mode_t distribution_mode;
- pn_data_t *properties;
- pn_data_t *filter;
- pn_data_t *outcomes;
- pn_data_t *capabilities;
-};
-
-ALLOC_DECLARE(qdr_terminus_t);
ALLOC_DEFINE(qdr_terminus_t);
const char* QDR_COORDINATOR_ADDRESS = "$coordinator";
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/e545dd9c/src/router_node.c
----------------------------------------------------------------------
diff --git a/src/router_node.c b/src/router_node.c
index 8c97b8b..5285894 100644
--- a/src/router_node.c
+++ b/src/router_node.c
@@ -1067,6 +1067,14 @@ static void AMQP_opened_handler(qd_router_t *router, qd_connection_t *conn, bool
DEQ_INSERT_TAIL(conn->connector->conn_info_list, item);
qd_log(router->log_source, QD_LOG_DEBUG, "Added %s as backup host", item->host_port);
}
+ else {
+ free(item->scheme);
+ free(item->host);
+ free(item->port);
+ free(item->hostname);
+ free(item->host_port);
+ free(item);
+ }
}
else {
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/e545dd9c/src/server.c
----------------------------------------------------------------------
diff --git a/src/server.c b/src/server.c
index 827a3f6..ab9ca92 100644
--- a/src/server.c
+++ b/src/server.c
@@ -947,11 +947,6 @@ static bool handle(qd_server_t *qd_server, pn_event_t *e, pn_connection_t *pn_co
if (ctx)
qd_container_handle_event(qd_server->container, e, pn_conn, ctx);
- /* Free the connection after all other processing is complete */
- if (ctx && pn_event_type(e) == PN_TRANSPORT_CLOSED) {
- pn_connection_set_context(pn_conn, NULL);
- qd_connection_free(ctx);
- }
return true;
}
@@ -976,6 +971,13 @@ static void *thread_run(void *arg)
qd_conn = !!pn_conn ? (qd_connection_t*) pn_connection_get_context(pn_conn) : 0;
running = handle(qd_server, e, conn, qd_conn);
+
+ /* Free the connection after all other processing is complete */
+ if (qd_conn && pn_event_type(e) == PN_TRANSPORT_CLOSED) {
+ pn_connection_set_context(pn_conn, NULL);
+ qd_connection_free(qd_conn);
+ qd_conn = 0;
+ }
}
//
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org