]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Rework sig_pri_hangup() to be simpler and clearer.
authorRichard Mudgett <rmudgett@digium.com>
Mon, 19 Sep 2011 15:25:34 +0000 (15:25 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Mon, 19 Sep 2011 15:25:34 +0000 (15:25 +0000)
JIRA AST-675

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@336569 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/sig_pri.c

index 46aea538c431e9736b109e3d8f7879753e99b5a0..974b5c3b1784b24b4636076318bddf5bc25e694e 100644 (file)
@@ -6225,11 +6225,7 @@ 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_log(LOG_DEBUG, "%s %d\n", __FUNCTION__, p->channel);
+       ast_debug(1, "%s %d\n", __FUNCTION__, p->channel);
        if (!ast->tech_pvt) {
                ast_log(LOG_WARNING, "Asked to hangup channel not connected\n");
                return 0;
@@ -6252,42 +6248,42 @@ 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);
        if (p->call) {
-               if (p->alreadyhungup) {
-                       ast_log(LOG_DEBUG, "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_log(LOG_DEBUG, "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);
                }
        }