diff options
| author | Ted Ross <tross@apache.org> | 2013-10-08 17:56:37 +0000 |
|---|---|---|
| committer | Ted Ross <tross@apache.org> | 2013-10-08 17:56:37 +0000 |
| commit | cc9eafe0f201aa118cb8c5e230a125797466d37d (patch) | |
| tree | 9bbaa1c66e356e78a04a714955ed5d06c1f24f8b /qpid/extras/dispatch | |
| parent | 5e34514e352c9e538234c9a49add49efe3ea9d85 (diff) | |
| download | qpid-python-cc9eafe0f201aa118cb8c5e230a125797466d37d.tar.gz | |
QPID-5216 - Fixed two memory leaks and one uninitialized-data bug.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1530373 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/extras/dispatch')
| -rw-r--r-- | qpid/extras/dispatch/src/message.c | 2 | ||||
| -rw-r--r-- | qpid/extras/dispatch/src/python_embedded.c | 5 | ||||
| -rw-r--r-- | qpid/extras/dispatch/src/router_node.c | 4 | ||||
| -rw-r--r-- | qpid/extras/dispatch/src/router_pynode.c | 4 |
4 files changed, 12 insertions, 3 deletions
diff --git a/qpid/extras/dispatch/src/message.c b/qpid/extras/dispatch/src/message.c index 772c0d4e16..4d4f37a546 100644 --- a/qpid/extras/dispatch/src/message.c +++ b/qpid/extras/dispatch/src/message.c @@ -474,9 +474,11 @@ dx_parsed_field_t *dx_message_delivery_annotations(dx_message_t *in_msg) !dx_parse_is_map(content->parsed_delivery_annotations)) { dx_field_iterator_free(da); dx_parse_free(content->parsed_delivery_annotations); + content->parsed_delivery_annotations = 0; return 0; } + dx_field_iterator_free(da); return content->parsed_delivery_annotations; } diff --git a/qpid/extras/dispatch/src/python_embedded.c b/qpid/extras/dispatch/src/python_embedded.c index 6b235c7406..325ce5c63b 100644 --- a/qpid/extras/dispatch/src/python_embedded.c +++ b/qpid/extras/dispatch/src/python_embedded.c @@ -467,6 +467,11 @@ static void dx_io_rx_handler(void *context, dx_message_t *msg, int link_id) Py_DECREF(pValue); } sys_mutex_unlock(lock); + + dx_field_iterator_free(ap); + dx_field_iterator_free(body); + dx_parse_free(ap_map); + dx_parse_free(body_map); } diff --git a/qpid/extras/dispatch/src/router_node.c b/qpid/extras/dispatch/src/router_node.c index 244a438667..7a08500cb5 100644 --- a/qpid/extras/dispatch/src/router_node.c +++ b/qpid/extras/dispatch/src/router_node.c @@ -585,8 +585,10 @@ static void router_rx_handler(void* context, dx_link_t *link, dx_delivery_t *del // // Invoke the in-process handler now that the lock is released. // - if (handler) + if (handler) { handler(handler_context, in_process_copy, rlink->mask_bit); + dx_free_message(in_process_copy); + } } diff --git a/qpid/extras/dispatch/src/router_pynode.c b/qpid/extras/dispatch/src/router_pynode.c index d6286614df..83ff43eb87 100644 --- a/qpid/extras/dispatch/src/router_pynode.c +++ b/qpid/extras/dispatch/src/router_pynode.c @@ -68,13 +68,13 @@ static char *dx_add_router(dx_router_t *router, const char *address, int router_ // remote router is looked up. // addr = new_dx_address_t(); + memset(addr, 0, sizeof(dx_address_t)); DEQ_ITEM_INIT(addr); - addr->handler = 0; - addr->handler_context = 0; DEQ_INIT(addr->rlinks); DEQ_INIT(addr->rnodes); hash_insert(router->addr_hash, iter, addr, &addr->hash_handle); DEQ_INSERT_TAIL(router->addrs, addr); + dx_field_iterator_free(iter); // // Create a router-node record to represent the remote router. |
