summaryrefslogtreecommitdiff
path: root/qpid/extras/dispatch/src
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2013-08-08 12:17:23 +0000
committerTed Ross <tross@apache.org>2013-08-08 12:17:23 +0000
commitbf9cb6739b8f49a866a3770df587361374ef8d04 (patch)
tree12d9e4a233cdfb0b21e45ea21773e6aabbaf47da /qpid/extras/dispatch/src
parentccd770b8d4cb231ad43a55fd83dbf577f67b4aec (diff)
downloadqpid-python-bf9cb6739b8f49a866a3770df587361374ef8d04.tar.gz
QPID-5045 - Added system tests for the routing scenarios, fixed discovered defects.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1511737 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/extras/dispatch/src')
-rw-r--r--qpid/extras/dispatch/src/container.c6
-rw-r--r--qpid/extras/dispatch/src/router_node.c26
2 files changed, 18 insertions, 14 deletions
diff --git a/qpid/extras/dispatch/src/container.c b/qpid/extras/dispatch/src/container.c
index 4a38cfc69c..d4766f0432 100644
--- a/qpid/extras/dispatch/src/container.c
+++ b/qpid/extras/dispatch/src/container.c
@@ -326,14 +326,12 @@ static int process_handler(dx_container_t *container, void* unused, pn_connectio
//
// Step 2.5: Traverse all of the links on the connection looking for
- // outgoing links with non-zero credit. Call the attached node's
- // writable handler for such links.
+ // links. Call the attached node's writable handler for such links.
//
pn_link = pn_link_head(conn, PN_LOCAL_ACTIVE | PN_REMOTE_ACTIVE);
while (pn_link) {
assert(pn_session_connection(pn_link_session(pn_link)) == conn);
- if (pn_link_is_sender(pn_link))
- event_count += do_writable(pn_link);
+ event_count += do_writable(pn_link);
pn_link = pn_link_next(pn_link, PN_LOCAL_ACTIVE | PN_REMOTE_ACTIVE);
}
diff --git a/qpid/extras/dispatch/src/router_node.c b/qpid/extras/dispatch/src/router_node.c
index 1c5e7c266c..0bab382b52 100644
--- a/qpid/extras/dispatch/src/router_node.c
+++ b/qpid/extras/dispatch/src/router_node.c
@@ -228,10 +228,14 @@ static int router_writable_link_handler(void* context, dx_link_t *link)
DEQ_REMOVE_HEAD(events);
if (re->delivery) {
- if (re->disposition)
+ if (re->disposition) {
pn_delivery_update(dx_delivery_pn(re->delivery), re->disposition);
- if (re->settle)
+ event_count++;
+ }
+ if (re->settle) {
dx_delivery_free(re->delivery, 0);
+ event_count++;
+ }
}
free_dx_routed_event_t(re);
@@ -1096,14 +1100,16 @@ static void dx_pyrouter_tick(dx_router_t *router)
PyObject *pArgs;
PyObject *pValue;
- pArgs = PyTuple_New(0);
- pValue = PyObject_CallObject(router->pyTick, pArgs);
- if (PyErr_Occurred()) {
- PyErr_Print();
- }
- Py_DECREF(pArgs);
- if (pValue) {
- Py_DECREF(pValue);
+ if (router->pyTick) {
+ pArgs = PyTuple_New(0);
+ pValue = PyObject_CallObject(router->pyTick, pArgs);
+ if (PyErr_Occurred()) {
+ PyErr_Print();
+ }
+ Py_DECREF(pArgs);
+ if (pValue) {
+ Py_DECREF(pValue);
+ }
}
}