[svn-commits] seanbright: branch seanbright/resolve-shadow-warnings r136887 - in /team/sean...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Sat Aug 9 07:22:24 CDT 2008


Author: seanbright
Date: Sat Aug  9 07:22:22 2008
New Revision: 136887

URL: http://svn.digium.com/view/asterisk?view=rev&rev=136887
Log:
Merged revisions 136819,136859 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

........
r136819 | seanbright | 2008-08-08 14:19:33 -0400 (Fri, 08 Aug 2008) | 3 lines

Bring in the configure and makeopts jazz for -Wshadow, but don't add it to the
Makefile yet.

........
r136859 | tilghman | 2008-08-08 21:15:38 -0400 (Fri, 08 Aug 2008) | 4 lines

Update documentation as to the behavior of AGI in 1.6.0 and higher.  Also, add
an OOB message that answers the question of, if AGI no longer shuts down the
connection on hangup, how will FastAGI know when to stop processing the call?

........

Modified:
    team/seanbright/resolve-shadow-warnings/   (props changed)
    team/seanbright/resolve-shadow-warnings/configure
    team/seanbright/resolve-shadow-warnings/configure.ac
    team/seanbright/resolve-shadow-warnings/res/res_agi.c

Propchange: team/seanbright/resolve-shadow-warnings/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Sat Aug  9 07:22:22 2008
@@ -1,1 +1,1 @@
-/trunk:1-136811
+/trunk:1-136886

Modified: team/seanbright/resolve-shadow-warnings/configure.ac
URL: http://svn.digium.com/view/asterisk/team/seanbright/resolve-shadow-warnings/configure.ac?view=diff&rev=136887&r1=136886&r2=136887
==============================================================================
--- team/seanbright/resolve-shadow-warnings/configure.ac (original)
+++ team/seanbright/resolve-shadow-warnings/configure.ac Sat Aug  9 07:22:22 2008
@@ -504,6 +504,7 @@
 	AC_MSG_RESULT(yes)
 	AST_SHADOW_WARNINGS=-Wshadow
 else
+	AC_MSG_RESULT(no)
 	AST_SHADOW_WARNINGS=
 fi
 AC_SUBST(AST_SHADOW_WARNINGS)

Modified: team/seanbright/resolve-shadow-warnings/res/res_agi.c
URL: http://svn.digium.com/view/asterisk/team/seanbright/resolve-shadow-warnings/res/res_agi.c?view=diff&rev=136887&r1=136886&r2=136887
==============================================================================
--- team/seanbright/resolve-shadow-warnings/res/res_agi.c (original)
+++ team/seanbright/resolve-shadow-warnings/res/res_agi.c Sat Aug  9 07:22:22 2008
@@ -73,19 +73,20 @@
 
 static char *descrip =
 "  [E|Dead]AGI(command,args): Executes an Asterisk Gateway Interface compliant\n"
-"program on a channel. AGI allows Asterisk to launch external programs\n"
-"written in any language to control a telephony channel, play audio,\n"
-"read DTMF digits, etc. by communicating with the AGI protocol on stdin\n"
-"and stdout.\n"
-"  This channel will stop dialplan execution on hangup inside of this\n"
-"application, except when using DeadAGI.  Otherwise, dialplan execution\n"
-"will continue normally.\n"
+"program on a channel. AGI allows Asterisk to launch external programs written\n"
+"in any language to control a telephony channel, play audio, read DTMF digits,\n"
+"etc. by communicating with the AGI protocol on stdin and stdout.\n"
+"  As of 1.6.0, this channel will not stop dialplan execution on hangup inside\n"
+"of this application. Dialplan execution will continue normally, even upon\n"
+"hangup until the AGI application signals a desire to stop (either by exiting\n"
+"or, in the case of a net script, by closing the connection).\n"
 "  A locally executed AGI script will receive SIGHUP on hangup from the channel\n"
-"except when using DeadAGI. This can be disabled by setting the AGISIGHUP channel\n"
-"variable to \"no\" before executing the AGI application.\n"
+"except when using DeadAGI. A fast AGI server will correspondingly receive a\n"
+"HANGUP in OOB data. Both of these signals may be disabled by setting the\n"
+"AGISIGHUP channel variable to \"no\" before executing the AGI application.\n"
 "  Using 'EAGI' provides enhanced AGI, with incoming audio available out of band\n"
-"on file descriptor 3\n\n"
-"  Use the CLI command 'agi show' to list available agi commands\n"
+"on file descriptor 3.\n\n"
+"  Use the CLI command 'agi show' to list available agi commands.\n"
 "  This application sets the following channel variable upon completion:\n"
 "     AGISTATUS      The status of the attempt to the run the AGI script\n"
 "                    text string, one of SUCCESS | FAILURE | NOTFOUND | HANGUP\n";
@@ -2601,6 +2602,7 @@
 	/* how many times we'll retry if ast_waitfor_nandfs will return without either
 	  channel or file descriptor in case select is interrupted by a system call (EINTR) */
 	int retry = AGI_NANDFS_RETRY;
+	const char *sighup;
 
 	if (!(readf = fdopen(agi->ctrl, "r"))) {
 		ast_log(LOG_WARNING, "Unable to fdopen file descriptor\n");
@@ -2615,8 +2617,11 @@
 		if (needhup) {
 			needhup = 0;
 			dead = 1;
-			if (pid > -1)
+			if (pid > -1) {
 				kill(pid, SIGHUP);
+			} else if (agi->fast) {
+				send(agi->ctrl, "HANGUP\n", 7, MSG_OOB);
+			}
 		}
 		ms = -1;
 		c = ast_waitfor_nandfds(&chan, dead ? 0 : 1, &agi->ctrl, 1, NULL, &outfd, &ms);
@@ -2698,16 +2703,18 @@
 		}
 	}
 	/* Notify process */
-	if (pid > -1) {
-		const char *sighup = pbx_builtin_getvar_helper(chan, "AGISIGHUP");
-		if (ast_strlen_zero(sighup) || !ast_false(sighup)) {
+	sighup = pbx_builtin_getvar_helper(chan, "AGISIGHUP");
+	if (ast_strlen_zero(sighup) || !ast_false(sighup)) {
+		if (pid > -1) {
 			if (kill(pid, SIGHUP)) {
 				ast_log(LOG_WARNING, "unable to send SIGHUP to AGI process %d: %s\n", pid, strerror(errno));
 			} else { /* Give the process a chance to die */
 				usleep(1);
 			}
-		}
-		waitpid(pid, status, WNOHANG);
+			waitpid(pid, status, WNOHANG);
+		} else if (agi->fast) {
+			send(agi->ctrl, "HANGUP\n", 7, MSG_OOB);
+		}
 	}
 	fclose(readf);
 	return returnstatus;




More information about the svn-commits mailing list