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/04/05 20:56:15 UTC
qpid-dispatch git commit: DISPATCH-952 - Outgoing links initiated by
the router will share a single session
Repository: qpid-dispatch
Updated Branches:
refs/heads/master 627aae1ec -> d37b0eb09
DISPATCH-952 - Outgoing links initiated by the router will share a single session
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/d37b0eb0
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/d37b0eb0
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/d37b0eb0
Branch: refs/heads/master
Commit: d37b0eb092e617c2986393022bd7b0f245547498
Parents: 627aae1
Author: Ganesh Murthy <gm...@redhat.com>
Authored: Wed Apr 4 16:15:31 2018 -0400
Committer: Ganesh Murthy <gm...@redhat.com>
Committed: Thu Apr 5 13:42:55 2018 -0400
----------------------------------------------------------------------
src/container.c | 28 ++++++++--------------------
src/server_private.h | 1 +
2 files changed, 9 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/d37b0eb0/src/container.c
----------------------------------------------------------------------
diff --git a/src/container.c b/src/container.c
index aa5bede..1f2b8f0 100644
--- a/src/container.c
+++ b/src/container.c
@@ -59,7 +59,6 @@ struct qd_link_t {
void *context;
qd_node_t *node;
bool drain_mode;
- bool close_sess_with_link;
pn_snd_settle_mode_t remote_snd_settle_mode;
qd_link_ref_list_t ref_list;
};
@@ -122,7 +121,6 @@ static void setup_outgoing_link(qd_container_t *container, pn_link_t *pn_link)
link->remote_snd_settle_mode = pn_link_remote_snd_settle_mode(pn_link);
link->drain_mode = pn_link_get_drain(pn_link);
- link->close_sess_with_link = false;
pn_link_set_context(pn_link, link);
node->ntype->outgoing_handler(node->context, link);
@@ -161,7 +159,6 @@ static void setup_incoming_link(qd_container_t *container, pn_link_t *pn_link)
link->node = node;
link->drain_mode = pn_link_get_drain(pn_link);
link->remote_snd_settle_mode = pn_link_remote_snd_settle_mode(pn_link);
- link->close_sess_with_link = false;
pn_link_set_context(pn_link, link);
node->ntype->incoming_handler(node->context, link);
@@ -487,7 +484,6 @@ void qd_container_handle_event(qd_container_t *container, pn_event_t *event)
pn_link = pn_event_link(event);
qd_link = (qd_link_t*) pn_link_get_context(pn_link);
if (qd_link) {
- pn_session_t *sess = qd_link->pn_sess;
qd_node_t *node = qd_link->node;
qd_detach_type_t dt = pn_event_type(event) == PN_LINK_REMOTE_CLOSE ? QD_CLOSED : QD_DETACHED;
if (!node && qd_link->pn_link == pn_link) {
@@ -510,8 +506,6 @@ void qd_container_handle_event(qd_container_t *container, pn_event_t *event)
}
if (pn_link_state(pn_link) & PN_LOCAL_CLOSED) {
- if (qd_link->close_sess_with_link && sess)
- pn_session_close(sess);
pn_link_set_context(pn_link, NULL);
pn_link_free(pn_link);
}
@@ -756,8 +750,14 @@ qd_link_t *qd_link(qd_node_t *node, qd_connection_t *conn, qd_direction_t dir, c
sys_mutex_lock(node->container->lock);
DEQ_INSERT_TAIL(node->container->links, link);
sys_mutex_unlock(node->container->lock);
- link->pn_sess = pn_session(qd_connection_pn(conn));
- pn_session_set_incoming_capacity(link->pn_sess, cf->incoming_capacity);
+
+ if (!conn->pn_sess) {
+ conn->pn_sess = pn_session(qd_connection_pn(conn));
+ pn_session_set_incoming_capacity(conn->pn_sess, cf->incoming_capacity);
+ pn_session_open(conn->pn_sess);
+ }
+
+ link->pn_sess = conn->pn_sess;
if (dir == QD_OUTGOING)
link->pn_link = pn_sender(link->pn_sess, name);
@@ -769,12 +769,9 @@ qd_link_t *qd_link(qd_node_t *node, qd_connection_t *conn, qd_direction_t dir, c
link->node = node;
link->drain_mode = pn_link_get_drain(link->pn_link);
link->remote_snd_settle_mode = pn_link_remote_snd_settle_mode(link->pn_link);
- link->close_sess_with_link = true;
pn_link_set_context(link->pn_link, link);
- pn_session_open(link->pn_sess);
-
return link;
}
@@ -904,10 +901,6 @@ void qd_link_close(qd_link_t *link)
if (link->pn_link)
pn_link_close(link->pn_link);
- if (link->close_sess_with_link && link->pn_sess &&
- pn_link_state(link->pn_link) == (PN_LOCAL_CLOSED | PN_REMOTE_CLOSED)) {
- pn_session_close(link->pn_sess);
- }
}
@@ -917,11 +910,6 @@ void qd_link_detach(qd_link_t *link)
pn_link_detach(link->pn_link);
pn_link_close(link->pn_link);
}
-
- if (link->close_sess_with_link && link->pn_sess &&
- pn_link_state(link->pn_link) == (PN_LOCAL_CLOSED | PN_REMOTE_CLOSED)) {
- pn_session_close(link->pn_sess);
- }
}
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/d37b0eb0/src/server_private.h
----------------------------------------------------------------------
diff --git a/src/server_private.h b/src/server_private.h
index a8fa009..d80a1fa 100644
--- a/src/server_private.h
+++ b/src/server_private.h
@@ -140,6 +140,7 @@ struct qd_connection_t {
int enqueued;
qd_timer_t *timer; // Timer for initial-setup
pn_connection_t *pn_conn;
+ pn_session_t *pn_sess;
pn_ssl_t *ssl;
qd_listener_t *listener;
qd_connector_t *connector;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org