summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid M. Lee <dlee@digium.com>2013-06-05 21:14:03 +0000
committerDavid M. Lee <dlee@digium.com>2013-06-05 21:14:03 +0000
commita36d38ab388327d72fdf4d952415438bc4fa609f (patch)
tree0284201e762d3eb06065037990e3d1a5ec6e93f4
parent94d8d0468f37184807c43559a02638cd922aebed (diff)
Fixed refcounting problems with chanspy AMI support.
The ast_multi_channel_blob_get_channel function does not bump the refcount on the channel snapshot that it returns. This is typical for Stasis message payloads, since being immutable means that the object won't get unreffed out from underneath you. The manager code for chanspy was unreffing the snapshots it got out of the multi-channel blob, which was one unref too many. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@390584 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--main/manager_channels.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/main/manager_channels.c b/main/manager_channels.c
index a66080cba..b6eeb60b0 100644
--- a/main/manager_channels.c
+++ b/main/manager_channels.c
@@ -859,7 +859,7 @@ static void channel_chanspy_stop_cb(void *data, struct stasis_subscription *sub,
struct stasis_topic *topic, struct stasis_message *message)
{
RAII_VAR(struct ast_str *, spyer_channel_string, NULL, ast_free);
- RAII_VAR(struct ast_channel_snapshot *, spyer, NULL, ao2_cleanup);
+ struct ast_channel_snapshot *spyer;
struct ast_multi_channel_blob *payload = stasis_message_data(message);
spyer = ast_multi_channel_blob_get_channel(payload, "spyer_channel");
@@ -883,8 +883,8 @@ static void channel_chanspy_start_cb(void *data, struct stasis_subscription *sub
{
RAII_VAR(struct ast_str *, spyer_channel_string, NULL, ast_free);
RAII_VAR(struct ast_str *, spyee_channel_string, NULL, ast_free);
- RAII_VAR(struct ast_channel_snapshot *, spyer, NULL, ao2_cleanup);
- RAII_VAR(struct ast_channel_snapshot *, spyee, NULL, ao2_cleanup);
+ struct ast_channel_snapshot *spyer;
+ struct ast_channel_snapshot *spyee;
struct ast_multi_channel_blob *payload = stasis_message_data(message);
spyer = ast_multi_channel_blob_get_channel(payload, "spyer_channel");