[svn-commits] rmudgett: branch rmudgett/hangup_handlers r368978 - in /team/rmudgett/hangup_...
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Thu Jun 14 17:46:43 CDT 2012
Author: rmudgett
Date: Thu Jun 14 17:46:40 2012
New Revision: 368978
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=368978
Log:
Final tweaks before committing review 1984.
* Fix Return application being able to restore a dialplan location
exactly. Channels without a PBX may not have context or exten set.
* Add verbose messages when the internal and AGI gosub routines are
started and are complete.
* Tweak builtin Hangup application.
Modified:
team/rmudgett/hangup_handlers/apps/app_stack.c
team/rmudgett/hangup_handlers/main/pbx.c
Modified: team/rmudgett/hangup_handlers/apps/app_stack.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/hangup_handlers/apps/app_stack.c?view=diff&rev=368978&r1=368977&r2=368978
==============================================================================
--- team/rmudgett/hangup_handlers/apps/app_stack.c (original)
+++ team/rmudgett/hangup_handlers/apps/app_stack.c Thu Jun 14 17:46:40 2012
@@ -370,7 +370,18 @@
res = -1;
}
- ast_explicit_goto(chan, oldframe->context, oldframe->extension, oldframe->priority);
+ /*
+ * We cannot use ast_explicit_goto() because we MUST restore
+ * what was there before. Channels that do not have a PBX may
+ * not have the context or exten set.
+ */
+ ast_channel_context_set(chan, oldframe->context);
+ ast_channel_exten_set(chan, oldframe->extension);
+ if (ast_test_flag(ast_channel_flags(chan), AST_FLAG_IN_AUTOLOOP)) {
+ --oldframe->priority;
+ }
+ ast_channel_priority_set(chan, oldframe->priority);
+
gosub_release_frame(chan, oldframe);
/* Set a return value, if any */
@@ -902,6 +913,9 @@
int res;
ast_channel_lock(chan);
+
+ ast_verb(3, "%s Internal %s(%s) start\n",
+ ast_channel_name(chan), app_gosub, sub_args);
/* Save non-hangup softhangup flags. */
saved_hangup_flags = ast_channel_softhangup_internal_flag(chan)
@@ -997,8 +1011,8 @@
if (ast_channel_priority(chan) == saved_priority
&& !strcmp(ast_channel_context(chan), saved_context)
&& !strcmp(ast_channel_exten(chan), saved_exten)) {
- ast_verb(3, "%s Internal Gosub call complete GOSUB_RETVAL=%s\n",
- ast_channel_name(chan),
+ ast_verb(3, "%s Internal %s(%s) complete GOSUB_RETVAL=%s\n",
+ ast_channel_name(chan), app_gosub, sub_args,
S_OR(pbx_builtin_getvar_helper(chan, "GOSUB_RETVAL"), ""));
} else {
ast_log(LOG_NOTICE, "%s Abnormal '%s(%s)' exit. Popping routine return locations.\n",
@@ -1084,7 +1098,7 @@
ast_channel_lock(chan);
- ast_debug(1, "%s Trying AGI %s(%s)\n", ast_channel_name(chan), app_gosub, gosub_args);
+ ast_verb(3, "%s AGI %s(%s) start\n", ast_channel_name(chan), app_gosub, gosub_args);
/* Save autoloop flag */
old_autoloopflag = ast_test_flag(ast_channel_flags(chan), AST_FLAG_IN_AUTOLOOP);
@@ -1149,8 +1163,8 @@
if (ast_channel_priority(chan) == old_priority
&& !strcmp(ast_channel_context(chan), old_context)
&& !strcmp(ast_channel_exten(chan), old_extension)) {
- ast_verb(3, "%s Internal Gosub call complete GOSUB_RETVAL=%s\n",
- ast_channel_name(chan),
+ ast_verb(3, "%s AGI %s(%s) complete GOSUB_RETVAL=%s\n",
+ ast_channel_name(chan), app_gosub, gosub_args,
S_OR(pbx_builtin_getvar_helper(chan, "GOSUB_RETVAL"), ""));
abnormal_exit = 0;
} else {
Modified: team/rmudgett/hangup_handlers/main/pbx.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/hangup_handlers/main/pbx.c?view=diff&rev=368978&r1=368977&r2=368978
==============================================================================
--- team/rmudgett/hangup_handlers/main/pbx.c (original)
+++ team/rmudgett/hangup_handlers/main/pbx.c Thu Jun 14 17:46:40 2012
@@ -10039,9 +10039,9 @@
ast_channel_lock(chan);
if (cause <= 0) {
cause = ast_channel_hangupcause(chan);
- }
- if (cause <= 0) {
- cause = AST_CAUSE_NORMAL_CLEARING;
+ if (cause <= 0) {
+ cause = AST_CAUSE_NORMAL_CLEARING;
+ }
}
ast_channel_hangupcause_set(chan, cause);
ast_softhangup_nolock(chan, AST_SOFTHANGUP_EXPLICIT);
More information about the svn-commits
mailing list