mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-13 00:04:53 +00:00
make DISA() use 'i' extension if it exists (issue #5439 with mods)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6779 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -329,25 +329,35 @@ static int disa_exec(struct ast_channel *chan, void *data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (k==3 && ast_exists_extension(chan, ourcontext, exten, 1, chan->cid.cid_num))
|
if (k == 3) {
|
||||||
{
|
int recheck = 0;
|
||||||
ast_playtones_stop(chan);
|
|
||||||
/* We're authenticated and have a valid extension */
|
|
||||||
if (ourcallerid && *ourcallerid)
|
|
||||||
{
|
|
||||||
ast_callerid_split(ourcallerid, ourcidname, sizeof(ourcidname), ourcidnum, sizeof(ourcidnum));
|
|
||||||
ast_set_callerid(chan, ourcidnum, ourcidname, ourcidnum);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ast_strlen_zero(acctcode)) {
|
if (!ast_exists_extension(chan, ourcontext, exten, 1, chan->cid.cid_num)) {
|
||||||
strncpy(chan->accountcode, acctcode, sizeof(chan->accountcode) - 1);
|
exten[0] = 'i';
|
||||||
|
exten[1] = '\0';
|
||||||
|
recheck = 1;
|
||||||
|
}
|
||||||
|
if (!recheck || ast_exists_extension(chan, ourcontext, exten, 1, chan->cid.cid_num)) {
|
||||||
|
ast_playtones_stop(chan);
|
||||||
|
/* We're authenticated and have a target extension */
|
||||||
|
if (ourcallerid && *ourcallerid)
|
||||||
|
{
|
||||||
|
ast_callerid_split(ourcallerid, ourcidname, sizeof(ourcidname), ourcidnum, sizeof(ourcidnum));
|
||||||
|
ast_set_callerid(chan, ourcidnum, ourcidname, ourcidnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ast_strlen_zero(acctcode))
|
||||||
|
strncpy(chan->accountcode, acctcode, sizeof(chan->accountcode) - 1);
|
||||||
|
|
||||||
|
ast_cdr_reset(chan->cdr, AST_CDR_FLAG_POSTED);
|
||||||
|
ast_explicit_goto(chan, ourcontext, exten, 1);
|
||||||
|
LOCAL_USER_REMOVE(u);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
ast_cdr_reset(chan->cdr, AST_CDR_FLAG_POSTED);
|
|
||||||
ast_goto_if_exists(chan, ourcontext, exten, 1);
|
|
||||||
LOCAL_USER_REMOVE(u);
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Received invalid, but no "i" extension exists in the given context */
|
||||||
|
|
||||||
reorder:
|
reorder:
|
||||||
|
|
||||||
ast_indicate(chan,AST_CONTROL_CONGESTION);
|
ast_indicate(chan,AST_CONTROL_CONGESTION);
|
||||||
|
Reference in New Issue
Block a user