You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2016/01/29 22:12:59 UTC

[2/4] qpid-dispatch git commit: DISPATCH-179 - Added to-override for deliveries via non-anonymous links. Remote management queries now work.

DISPATCH-179 - Added to-override for deliveries via non-anonymous links.
               Remote management queries now work.


Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/4fbc6e88
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/4fbc6e88
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/4fbc6e88

Branch: refs/heads/tross-DISPATCH-179-1
Commit: 4fbc6e88b5365a2617873a0ce39c6463752f961a
Parents: 86852b2
Author: Ted Ross <tr...@redhat.com>
Authored: Fri Jan 29 12:16:16 2016 -0500
Committer: Ted Ross <tr...@redhat.com>
Committed: Fri Jan 29 12:16:16 2016 -0500

----------------------------------------------------------------------
 src/router_core/router_core.c         | 12 ++++++++----
 src/router_core/router_core_private.h |  3 ++-
 src/router_node.c                     | 11 ++++++++---
 3 files changed, 18 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/4fbc6e88/src/router_core/router_core.c
----------------------------------------------------------------------
diff --git a/src/router_core/router_core.c b/src/router_core/router_core.c
index b341cf4..50b694a 100644
--- a/src/router_core/router_core.c
+++ b/src/router_core/router_core.c
@@ -67,9 +67,12 @@ qdr_core_t *qdr_core(qd_dispatch_t *qd, qd_router_mode_t mode, const char *area,
     //
     // Perform outside-of-thread setup for the management agent
     //
-    core->agent_subscription = qdr_core_subscribe(core, "$management", 'M', '0',
-                                                  QD_SEMANTICS_ANYCAST_CLOSEST,
-                                                  qdr_management_agent_on_message, core);
+    core->agent_subscription_mobile = qdr_core_subscribe(core, "$management", 'M', '0',
+                                                         QD_SEMANTICS_ANYCAST_CLOSEST,
+                                                         qdr_management_agent_on_message, core);
+    core->agent_subscription_local = qdr_core_subscribe(core, "$management", 'L', '0',
+                                                        QD_SEMANTICS_ANYCAST_CLOSEST,
+                                                        qdr_management_agent_on_message, core);
 
     return core;
 }
@@ -87,7 +90,8 @@ void qdr_core_free(qdr_core_t *core)
     //
     // Free the core resources
     //
-    qdr_core_unsubscribe(core->agent_subscription);
+    qdr_core_unsubscribe(core->agent_subscription_mobile);
+    qdr_core_unsubscribe(core->agent_subscription_local);
     sys_thread_free(core->thread);
     sys_cond_free(core->action_cond);
     sys_mutex_free(core->action_lock);

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/4fbc6e88/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 8b8abd9..bd7baef 100644
--- a/src/router_core/router_core_private.h
+++ b/src/router_core/router_core_private.h
@@ -404,7 +404,8 @@ struct qdr_core_t {
     sys_mutex_t           *query_lock;
     qd_timer_t            *agent_timer;
     qdr_manage_response_t  agent_response_handler;
-    qdr_subscription_t    *agent_subscription;
+    qdr_subscription_t    *agent_subscription_mobile;
+    qdr_subscription_t    *agent_subscription_local;
 
     //
     // Route table section

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/4fbc6e88/src/router_node.c
----------------------------------------------------------------------
diff --git a/src/router_node.c b/src/router_node.c
index 2235ba3..c63c342 100644
--- a/src/router_node.c
+++ b/src/router_node.c
@@ -295,8 +295,15 @@ static void router_rx_handler(void* context, qd_link_t *link, pn_delivery_t *pnd
                 delivery = qdr_link_deliver_to(rlink, msg, ingress_iter, addr_iter, pn_delivery_settled(pnd),
                                                link_exclusions);
             }
-        } else
+        } else {
+            const char *r_tgt = pn_terminus_get_address(qd_link_remote_target(link));
+            if (r_tgt) {
+                qd_composed_field_t *to_override = qd_compose_subfield(0);
+                qd_compose_insert_string(to_override, r_tgt);
+                qd_message_set_to_override_annotation(msg, to_override);
+            }
             delivery = qdr_link_deliver(rlink, msg, ingress_iter, pn_delivery_settled(pnd), link_exclusions);
+        }
 
         if (delivery) {
             if (pn_delivery_settled(pnd))
@@ -311,7 +318,6 @@ static void router_rx_handler(void* context, qd_link_t *link, pn_delivery_t *pnd
             //
             pn_delivery_update(pnd, PN_REJECTED);
             pn_delivery_settle(pnd);
-            qd_server_activate(qd_link_connection(link));
         }
 
         //
@@ -334,7 +340,6 @@ static void router_rx_handler(void* context, qd_link_t *link, pn_delivery_t *pnd
         //
         pn_delivery_update(pnd, PN_REJECTED);
         pn_delivery_settle(pnd);
-        qd_server_activate(qd_link_connection(link));
     }
 }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org