diff options
author | Jeff Peeler <jpeeler@digium.com> | 2009-07-15 22:02:55 +0000 |
---|---|---|
committer | Jeff Peeler <jpeeler@digium.com> | 2009-07-15 22:02:55 +0000 |
commit | 646cd02c09f3a50555d2d505acfee2acc53eeba2 (patch) | |
tree | de5bedaf3496ae212405264b5d95921d6b92cb8d /channels/sig_pri.c | |
parent | e9e753d6f3f2ba9fa8854dbc24c7a7adc929332f (diff) |
The dialing flag was mistakingly removed from sig_pri.
This readds the proper setting of the flag and is really a continuation of
r205731. The flag was being set properly in sig_analog, but use of the
newly added set_dialing callback allowed for some simplification in
chan_dahdi.
(closes issue #15486)
Reported by: rmudgett
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@206767 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/sig_pri.c')
-rw-r--r-- | channels/sig_pri.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/channels/sig_pri.c b/channels/sig_pri.c index 5111f9181..788066ae1 100644 --- a/channels/sig_pri.c +++ b/channels/sig_pri.c @@ -94,6 +94,12 @@ static void sig_pri_handle_dchan_exception(struct sig_pri_pri *pri, int index) pri->calls->handle_dchan_exception(pri, index); } +static void sig_pri_set_dialing(struct sig_pri_chan *p, int flag) +{ + if (p->calls->set_dialing) + p->calls->set_dialing(p, flag); +} + static void sig_pri_unlock_private(struct sig_pri_chan *p) { if (p->calls->unlock_private) @@ -1325,6 +1331,7 @@ static void *pri_dchannel(void *vpri) pri_queue_frame(pri->pvts[chanpos], &f, pri); } pri->pvts[chanpos]->progress = 1; + sig_pri_set_dialing(pri->pvts[chanpos], 0); sig_pri_unlock_private(pri->pvts[chanpos]); } } @@ -1349,6 +1356,7 @@ static void *pri_dchannel(void *vpri) pri_queue_frame(pri->pvts[chanpos], &f, pri); } pri->pvts[chanpos]->proceeding = 1; + sig_pri_set_dialing(pri->pvts[chanpos], 0); sig_pri_unlock_private(pri->pvts[chanpos]); } } @@ -1388,6 +1396,7 @@ static void *pri_dchannel(void *vpri) sig_pri_lock_private(pri->pvts[chanpos]); pri_queue_control(pri->pvts[chanpos], AST_CONTROL_ANSWER, pri); /* Enable echo cancellation if it's not on already */ + sig_pri_set_dialing(pri->pvts[chanpos], 0); sig_pri_set_echocanceller(pri->pvts[chanpos], 1); #ifdef SUPPORT_USERUSER @@ -1698,6 +1707,7 @@ int sig_pri_hangup(struct sig_pri_chan *p, struct ast_channel *ast) p->setup_ack = 0; p->rdnis[0] = '\0'; p->exten[0] = '\0'; + sig_pri_set_dialing(p, 0); if (!p->call) { res = 0; @@ -2016,6 +2026,7 @@ int sig_pri_call(struct sig_pri_chan *p, struct ast_channel *ast, char *rdest, i } pri_sr_free(sr); ast_setstate(ast, AST_STATE_DIALING); + sig_pri_set_dialing(p, 1); pri_rel(p->pri); return 0; } @@ -2077,6 +2088,7 @@ int sig_pri_indicate(struct sig_pri_chan *p, struct ast_channel *chan, int condi } } p->proceeding = 1; + sig_pri_set_dialing(p, 0); } /* don't continue in ast_indicate */ res = 0; @@ -2158,6 +2170,7 @@ int sig_pri_answer(struct sig_pri_chan *p, struct ast_channel *ast) /* Send a pri acknowledge */ if (!pri_grab(p, p->pri)) { p->proceeding = 1; + sig_pri_set_dialing(p, 0); res = pri_answer(p->pri->pri, p->call, 0, !p->digital); pri_rel(p->pri); } else { |