summaryrefslogtreecommitdiff
path: root/main/stasis_message_router.c
diff options
context:
space:
mode:
authorKinsey Moore <kmoore@digium.com>2013-03-19 19:07:46 +0000
committerKinsey Moore <kmoore@digium.com>2013-03-19 19:07:46 +0000
commit6aee9178d59d0cb51319fb3662872f478fe6b4e5 (patch)
tree029e4e78cf618922c88d8c38574b28fd09b886ae /main/stasis_message_router.c
parented382681e59ac1234adf1e39c7482fa0616b3d1c (diff)
Fix lock destruction/unlock inversion
When using scoped locks, the unref of an AO2 object should happen after the unlock occurs which requires usage of scoped refs. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@383377 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/stasis_message_router.c')
-rw-r--r--main/stasis_message_router.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/main/stasis_message_router.c b/main/stasis_message_router.c
index 01ad88ae0..97ed7ad92 100644
--- a/main/stasis_message_router.c
+++ b/main/stasis_message_router.c
@@ -91,6 +91,7 @@ static void router_dispatch(void *data,
struct stasis_message *message)
{
struct stasis_message_router *router = data;
+ RAII_VAR(struct stasis_message_router *, router_needs_cleanup, NULL, ao2_cleanup);
RAII_VAR(struct stasis_message_route *, route, NULL, ao2_cleanup);
struct stasis_message_type *type = stasis_message_type(message);
size_t i;
@@ -123,7 +124,7 @@ static void router_dispatch(void *data,
}
if (stasis_subscription_final_message(sub, message)) {
- ao2_cleanup(router);
+ router_needs_cleanup = router;
return;
}