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/04/08 21:33:31 UTC
qpid-dispatch git commit: DISPATCH-266 - Added a free_user_id bool to
qd_connection_t and set it to true when we malloc user_id so we can free it
later on
Repository: qpid-dispatch
Updated Branches:
refs/heads/master deeb0316b -> b3d62eb90
DISPATCH-266 - Added a free_user_id bool to qd_connection_t and set it to true when we malloc user_id so we can free it later on
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/b3d62eb9
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/b3d62eb9
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/b3d62eb9
Branch: refs/heads/master
Commit: b3d62eb90f4ac90655c294d3ad6d617e4919a8ce
Parents: deeb031
Author: Ganesh Murthy <gm...@redhat.com>
Authored: Fri Apr 8 15:32:09 2016 -0400
Committer: Ganesh Murthy <gm...@redhat.com>
Committed: Fri Apr 8 15:32:09 2016 -0400
----------------------------------------------------------------------
src/server.c | 11 ++++++++++-
src/server_private.h | 1 +
2 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/b3d62eb9/src/server.c
----------------------------------------------------------------------
diff --git a/src/server.c b/src/server.c
index 69a880b..21a8865 100644
--- a/src/server.c
+++ b/src/server.c
@@ -98,6 +98,9 @@ static void free_qd_connection(qd_connection_t *ctx)
ctx->collector = NULL;
}
+ if (ctx->free_user_id)
+ free((char*)ctx->user_id);
+
free_qd_connection_t(ctx);
}
@@ -243,6 +246,11 @@ static const char *qd_transport_get_user(qd_connection_t *conn, pn_transport_t *
if(uid_length > 0) {
char *user_id = malloc((uid_length + semi_colon_count + 1) * sizeof(char)); // the +1 is for the '\0' character
+ //
+ // We have allocated memory for user_id. We are responsible for freeing this memory. Set conn->free_user_id
+ // to true so that we know that we have to free the user_id
+ //
+ conn->free_user_id = true;
memset(user_id, 0, uid_length + semi_colon_count + 1);
// The components in the user id string must appear in the same order as it appears in the component string. that is
@@ -318,7 +326,6 @@ void qd_connection_set_user(qd_connection_t *conn)
conn->user_id = pn_transport_get_user(tport);
// We want to set the user name only if it is not already set and the selected sasl mechanism is EXTERNAL
if (mech && strcmp(mech, MECH_EXTERNAL) == 0) {
- // TODO - Make sure you free the user_id when conn is freed ?
const char *user_id = qd_transport_get_user(conn, tport);
if (user_id)
conn->user_id = user_id;
@@ -510,6 +517,7 @@ static void thread_process_listeners_LH(qd_server_t *qd_server)
ctx->link_context = 0;
ctx->ufd = 0;
ctx->user_id = 0;
+ ctx->free_user_id = false;
ctx->connection_id = qd_server->next_connection_id++; // Increment the connection id so the next connection can use it
ctx->policy_settings = 0;
ctx->n_senders = 0;
@@ -1059,6 +1067,7 @@ static void cxtr_try_open(void *context)
ctx->link_context = 0;
ctx->ufd = 0;
ctx->user_id = 0;
+ ctx->free_user_id = false;
ctx->policy_settings = 0;
ctx->n_senders = 0;
ctx->n_receivers = 0;
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/b3d62eb9/src/server_private.h
----------------------------------------------------------------------
diff --git a/src/server_private.h b/src/server_private.h
index 562feb5..0a8d701 100644
--- a/src/server_private.h
+++ b/src/server_private.h
@@ -100,6 +100,7 @@ struct qd_connection_t {
qd_user_fd_t *ufd;
uint64_t connection_id; // A unique identifier for the qd_connection_t. The underlying pn_connection already has one but it is long and clunky.
const char *user_id; // A unique identifier for the user on the connection. This is currently populated from the client ssl cert. See ssl_uid_format in server.h for more info
+ bool free_user_id;
qd_policy_settings_t *policy_settings;
int n_sessions;
int n_senders;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org