diff options
author | Richard Mudgett <rmudgett@digium.com> | 2011-09-19 15:36:39 +0000 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2011-09-19 15:36:39 +0000 |
commit | 0f9330b58caf67351a10ce957cdb084b9e9e34da (patch) | |
tree | 1fc7ee299ca39feba25f8e9ba31b6c207d50b55d /channels | |
parent | 1ec4cb8ea01a1a0bf0b31fd3ee0f4c0a284976b8 (diff) |
Merged revisions 336570 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/10
................
r336570 | rmudgett | 2011-09-19 10:32:00 -0500 (Mon, 19 Sep 2011) | 11 lines
Merged revisions 336569 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r336569 | rmudgett | 2011-09-19 10:25:34 -0500 (Mon, 19 Sep 2011) | 4 lines
Rework sig_pri_hangup() to be simpler and clearer.
JIRA AST-675
........
................
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@336571 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-rw-r--r-- | channels/sig_pri.c | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/channels/sig_pri.c b/channels/sig_pri.c index 7db123e29..5da65a268 100644 --- a/channels/sig_pri.c +++ b/channels/sig_pri.c @@ -7124,10 +7124,6 @@ void sig_pri_init_pri(struct sig_pri_span *pri) int sig_pri_hangup(struct sig_pri_chan *p, struct ast_channel *ast) { -#ifdef SUPPORT_USERUSER - const char *useruser = pbx_builtin_getvar_helper(ast, "USERUSERINFO"); -#endif - ast_debug(1, "%s %d\n", __FUNCTION__, p->channel); if (!ast->tech_pvt) { ast_log(LOG_WARNING, "Asked to hangup channel not connected\n"); @@ -7151,43 +7147,43 @@ int sig_pri_hangup(struct sig_pri_chan *p, struct ast_channel *ast) p->exten[0] = '\0'; sig_pri_set_dialing(p, 0); - /* Make sure we have a call (or REALLY have a call in the case of a PRI) */ + /* Make sure we really have a call */ pri_grab(p, p->pri); sig_pri_moh_fsm_event(ast, p, SIG_PRI_MOH_EVENT_RESET); if (p->call) { - if (p->alreadyhungup) { - ast_debug(1, "Already hungup... Calling hangup once, and clearing call\n"); +#if defined(SUPPORT_USERUSER) + const char *useruser = pbx_builtin_getvar_helper(ast, "USERUSERINFO"); -#ifdef SUPPORT_USERUSER + if (!ast_strlen_zero(useruser)) { pri_call_set_useruser(p->call, useruser); -#endif + } +#endif /* defined(SUPPORT_USERUSER) */ #if defined(HAVE_PRI_AOC_EVENTS) - if (p->holding_aoce) { - pri_aoc_e_send(p->pri->pri, p->call, &p->aoc_e); - } + if (p->holding_aoce) { + pri_aoc_e_send(p->pri->pri, p->call, &p->aoc_e); + } #endif /* defined(HAVE_PRI_AOC_EVENTS) */ + + if (p->alreadyhungup) { + ast_debug(1, "Already hungup... Calling hangup once, and clearing call\n"); + pri_hangup(p->pri->pri, p->call, -1); p->call = NULL; } else { const char *cause = pbx_builtin_getvar_helper(ast,"PRI_CAUSE"); int icause = ast->hangupcause ? ast->hangupcause : -1; - ast_debug(1, "Not yet hungup... Calling hangup once with icause, and clearing call\n"); - -#ifdef SUPPORT_USERUSER - pri_call_set_useruser(p->call, useruser); -#endif p->alreadyhungup = 1; - if (cause) { - if (atoi(cause)) + if (!ast_strlen_zero(cause)) { + if (atoi(cause)) { icause = atoi(cause); + } } -#if defined(HAVE_PRI_AOC_EVENTS) - if (p->holding_aoce) { - pri_aoc_e_send(p->pri->pri, p->call, &p->aoc_e); - } -#endif /* defined(HAVE_PRI_AOC_EVENTS) */ + ast_debug(1, + "Not yet hungup... Calling hangup with cause %d, and clearing call\n", + icause); + pri_hangup(p->pri->pri, p->call, icause); } } |