mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 11:58:52 +00:00
Fix chan_dahdi option ringtimeout
dahdi_read relies on the dahdi_pvt copy of ringt which was not getting set in sig_analog. This patch adds a callback to do so. (closes issue #15288) Reported by: alecdavis Patches: chan_dahdi.ringtimeout.diff.txt uploaded by alecdavis (license 585) Tested by: alecdavis git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@211908 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -707,6 +707,15 @@ static void analog_set_dialing(struct analog_pvt *p, int flag)
|
||||
}
|
||||
}
|
||||
|
||||
static void analog_set_ringtimeout(struct analog_pvt *p, int ringt)
|
||||
{
|
||||
p->ringt = ringt;
|
||||
if (!p->calls->set_ringtimeout) {
|
||||
return;
|
||||
}
|
||||
p->calls->set_ringtimeout(p->chan_pvt, ringt);
|
||||
}
|
||||
|
||||
int analog_call(struct analog_pvt *p, struct ast_channel *ast, char *rdest, int timeout)
|
||||
{
|
||||
int res, index,mysig;
|
||||
@@ -1060,7 +1069,7 @@ int analog_hangup(struct analog_pvt *p, struct ast_channel *ast)
|
||||
|
||||
if (!p->subs[ANALOG_SUB_REAL].owner && !p->subs[ANALOG_SUB_CALLWAIT].owner && !p->subs[ANALOG_SUB_THREEWAY].owner) {
|
||||
p->owner = NULL;
|
||||
p->ringt = 0;
|
||||
analog_set_ringtimeout(p, 0);
|
||||
p->outgoing = 0;
|
||||
p->onhooktime = time(NULL);
|
||||
p->cidrings = 1;
|
||||
@@ -1130,7 +1139,7 @@ int analog_answer(struct analog_pvt *p, struct ast_channel *ast)
|
||||
case ANALOG_SIG_FXSLS:
|
||||
case ANALOG_SIG_FXSGS:
|
||||
case ANALOG_SIG_FXSKS:
|
||||
p->ringt = 0;
|
||||
analog_set_ringtimeout(p, 0);
|
||||
/* Fall through */
|
||||
case ANALOG_SIG_EM:
|
||||
case ANALOG_SIG_EM_E1:
|
||||
@@ -2093,7 +2102,7 @@ static void *__analog_ss_thread(void *data)
|
||||
|
||||
ast_setstate(chan, AST_STATE_RING);
|
||||
chan->rings = 1;
|
||||
p->ringt = p->ringt_base;
|
||||
analog_set_ringtimeout(p, p->ringt_base);
|
||||
res = ast_pbx_run(chan);
|
||||
if (res) {
|
||||
ast_hangup(chan);
|
||||
@@ -2413,7 +2422,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_
|
||||
case ANALOG_SIG_FXSGS:
|
||||
case ANALOG_SIG_FXSKS:
|
||||
if (ast->_state == AST_STATE_RING) {
|
||||
p->ringt = p->ringt_base;
|
||||
analog_set_ringtimeout(p, p->ringt_base);
|
||||
}
|
||||
|
||||
/* Fall through */
|
||||
@@ -2457,7 +2466,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_
|
||||
case ANALOG_SIG_FXSGS:
|
||||
case ANALOG_SIG_FXSKS:
|
||||
if (ast->_state == AST_STATE_RING) {
|
||||
p->ringt = p->ringt_base;
|
||||
analog_set_ringtimeout(p, p->ringt_base);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -3007,7 +3016,7 @@ int analog_handle_init_event(struct analog_pvt *i, int event)
|
||||
case ANALOG_SIG_FXSLS:
|
||||
case ANALOG_SIG_FXSGS:
|
||||
case ANALOG_SIG_FXSKS:
|
||||
i->ringt = i->ringt_base;
|
||||
analog_set_ringtimeout(i, i->ringt_base);
|
||||
/* Fall through */
|
||||
case ANALOG_SIG_EMWINK:
|
||||
case ANALOG_SIG_FEATD:
|
||||
|
Reference in New Issue
Block a user