Merged revisions 42452 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r42452 | file | 2006-09-08 14:50:43 -0400 (Fri, 08 Sep 2006) | 2 lines Swap spies during masquerading ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@42453 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
parent
4c937339e5
commit
160cea6139
|
@ -3154,6 +3154,8 @@ int ast_do_masquerade(struct ast_channel *original)
|
|||
void *t_pvt;
|
||||
struct ast_callerid tmpcid;
|
||||
struct ast_channel *clone = original->masq;
|
||||
struct ast_channel_spy_list *spy_list = NULL;
|
||||
struct ast_channel_spy *spy = NULL;
|
||||
int rformat = original->readformat;
|
||||
int wformat = original->writeformat;
|
||||
char newn[100];
|
||||
|
@ -3232,6 +3234,27 @@ int ast_do_masquerade(struct ast_channel *original)
|
|||
original->rawwriteformat = clone->rawwriteformat;
|
||||
clone->rawwriteformat = x;
|
||||
|
||||
/* Swap the spies */
|
||||
spy_list = original->spies;
|
||||
original->spies = clone->spies;
|
||||
clone->spies = spy_list;
|
||||
|
||||
/* Update channel on respective spy lists if present */
|
||||
if (original->spies) {
|
||||
AST_LIST_TRAVERSE(&original->spies->list, spy, list) {
|
||||
ast_mutex_lock(&spy->lock);
|
||||
spy->chan = original;
|
||||
ast_mutex_unlock(&spy->lock);
|
||||
}
|
||||
}
|
||||
if (clone->spies) {
|
||||
AST_LIST_TRAVERSE(&clone->spies->list, spy, list) {
|
||||
ast_mutex_lock(&spy->lock);
|
||||
spy->chan = clone;
|
||||
ast_mutex_unlock(&spy->lock);
|
||||
}
|
||||
}
|
||||
|
||||
/* Save any pending frames on both sides. Start by counting
|
||||
* how many we're going to need... */
|
||||
x = 0;
|
||||
|
|
Loading…
Reference in New Issue