Don't allow masquerading into oneself (bug #3040)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@4726 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
parent
a985c15efe
commit
c6a8c87fbb
|
@ -2208,6 +2208,10 @@ int ast_channel_masquerade(struct ast_channel *original, struct ast_channel *clo
|
|||
{
|
||||
struct ast_frame null = { AST_FRAME_NULL, };
|
||||
int res = -1;
|
||||
if (original == clone) {
|
||||
ast_log(LOG_WARNING, "Can't masquerade channel '%s' into itself!\n", original->name);
|
||||
return -1;
|
||||
}
|
||||
ast_mutex_lock(&original->lock);
|
||||
while(ast_mutex_trylock(&clone->lock)) {
|
||||
ast_mutex_unlock(&original->lock);
|
||||
|
|
|
@ -5335,9 +5335,13 @@ static int get_refer_info(struct sip_pvt *p, struct sip_request *oreq)
|
|||
p2 = p2->next;
|
||||
}
|
||||
ast_mutex_unlock(&iflock);
|
||||
if (p->refer_call)
|
||||
if (p->refer_call) {
|
||||
if (p->refer_call == p) {
|
||||
ast_log(LOG_NOTICE, "Supervised transfer attempted to transfer into same call id (%s == %s)!\n", tmp5, p->callid);
|
||||
p->refer_call = NULL;
|
||||
} else
|
||||
return 0;
|
||||
else
|
||||
} else
|
||||
ast_log(LOG_NOTICE, "Supervised transfer requested, but unable to find callid '%s'\n", tmp5);
|
||||
} else if (ast_exists_extension(NULL, p->context, c, 1, NULL) || !strcmp(c, ast_parking_ext())) {
|
||||
/* This is an unsupervised transfer */
|
||||
|
|
Reference in New Issue