diff options
Diffstat (limited to 'main')
-rw-r--r-- | main/channel.c | 3 | ||||
-rw-r--r-- | main/channel_internal_api.c | 9 |
2 files changed, 12 insertions, 0 deletions
diff --git a/main/channel.c b/main/channel.c index 922fd931c..6bd253174 100644 --- a/main/channel.c +++ b/main/channel.c @@ -6519,6 +6519,9 @@ static void channel_do_masquerade(struct ast_channel *original, struct ast_chann */ ast_channel_internal_swap_uniqueid_and_linkedid(clonechan, original); + /* Make sure the Stasis topic on the channel is updated appropriately */ + ast_channel_internal_swap_topics(clonechan, original); + /* Swap channel names. This uses ast_channel_name_set directly, so we * don't get any spurious rename events. */ diff --git a/main/channel_internal_api.c b/main/channel_internal_api.c index c62812ea7..624bdd1cb 100644 --- a/main/channel_internal_api.c +++ b/main/channel_internal_api.c @@ -1534,6 +1534,15 @@ void ast_channel_internal_swap_uniqueid_and_linkedid(struct ast_channel *a, stru b->linkedid = temp; } +void ast_channel_internal_swap_topics(struct ast_channel *a, struct ast_channel *b) +{ + struct stasis_cp_single *temp; + + temp = a->topics; + a->topics = b->topics; + b->topics = temp; +} + void ast_channel_internal_set_fake_ids(struct ast_channel *chan, const char *uniqueid, const char *linkedid) { ast_copy_string(chan->uniqueid.unique_id, uniqueid, sizeof(chan->uniqueid.unique_id)); |