summaryrefslogtreecommitdiff
path: root/qpid/extras/dispatch/src/router_node.c
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2013-06-26 20:12:07 +0000
committerTed Ross <tross@apache.org>2013-06-26 20:12:07 +0000
commit27e19a50dda487c1ba3e69e539e57ae499b29b9c (patch)
tree8e1c609c012370055b5ff06ad08af4fa5a00b8fa /qpid/extras/dispatch/src/router_node.c
parent2a9141ac23a2c8459a0ac684f6522898d9abb6e7 (diff)
downloadqpid-python-27e19a50dda487c1ba3e69e539e57ae499b29b9c.tar.gz
NO-JIRA - Management agent in the container now responds to "get" requests.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1497070 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/extras/dispatch/src/router_node.c')
-rw-r--r--qpid/extras/dispatch/src/router_node.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/qpid/extras/dispatch/src/router_node.c b/qpid/extras/dispatch/src/router_node.c
index c6105e35ad..010b008f93 100644
--- a/qpid/extras/dispatch/src/router_node.c
+++ b/qpid/extras/dispatch/src/router_node.c
@@ -573,9 +573,25 @@ void dx_router_unregister_address(dx_address_t *ad)
}
-void dx_router_send(dx_dispatch_t *dx,
- const char *address,
- dx_message_t *msg)
+void dx_router_send(dx_dispatch_t *dx,
+ dx_field_iterator_t *address,
+ dx_message_t *msg)
{
+ dx_router_t *router = dx->router;
+ dx_address_t *addr;
+
+ dx_field_iterator_reset_view(address, ITER_VIEW_ADDRESS_HASH);
+ sys_mutex_lock(router->lock);
+ hash_retrieve(router->out_hash, address, (void*) &addr);
+ if (addr) {
+ if (addr->rlink) {
+ pn_link_t *pn_outlink = dx_link_pn(addr->rlink->link);
+ dx_message_t *copy = dx_message_copy(msg);
+ DEQ_INSERT_TAIL(addr->rlink->out_fifo, copy);
+ pn_link_offered(pn_outlink, DEQ_SIZE(addr->rlink->out_fifo));
+ dx_link_activate(addr->rlink->link);
+ }
+ }
+ sys_mutex_unlock(router->lock); // TOINVESTIGATE Move this higher?
}