[asterisk-commits] mmichelson: branch 1.6.0 r166471 - in /branches/1.6.0: ./ res/res_agi.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Dec 22 17:27:03 CST 2008


Author: mmichelson
Date: Mon Dec 22 17:27:03 2008
New Revision: 166471

URL: http://svn.digium.com/view/asterisk?view=rev&rev=166471
Log:
Merged revisions 166470 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

........
r166470 | mmichelson | 2008-12-22 17:25:34 -0600 (Mon, 22 Dec 2008) | 11 lines

Always use the value of the AGISIGHUP when running an AGI.

Prior to this patch, the value of AGISIGUP was not always
honored when set on a channel.

(closes issue #13711)
Reported by: fmueller
Patches:
      13711.patch uploaded by putnopvut (license 60)


........

Modified:
    branches/1.6.0/   (props changed)
    branches/1.6.0/res/res_agi.c

Propchange: branches/1.6.0/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.

Modified: branches/1.6.0/res/res_agi.c
URL: http://svn.digium.com/view/asterisk/branches/1.6.0/res/res_agi.c?view=diff&rev=166471&r1=166470&r2=166471
==============================================================================
--- branches/1.6.0/res/res_agi.c (original)
+++ branches/1.6.0/res/res_agi.c Mon Dec 22 17:27:03 2008
@@ -2631,25 +2631,34 @@
 	/* 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;
+	int send_sighup;
+	const char *sighup_str;
+	
+	ast_channel_lock(chan);
+	sighup_str = pbx_builtin_getvar_helper(chan, "AGISIGHUP");
+	send_sighup = ast_strlen_zero(sighup_str) || !ast_false(sighup_str);
+	ast_channel_unlock(chan);
 
 	if (!(readf = fdopen(agi->ctrl, "r"))) {
 		ast_log(LOG_WARNING, "Unable to fdopen file descriptor\n");
-		if (pid > -1)
+		if (send_sighup && pid > -1)
 			kill(pid, SIGHUP);
 		close(agi->ctrl);
 		return AGI_RESULT_FAILURE;
 	}
+	
 	setlinebuf(readf);
 	setup_env(chan, request, agi->fd, (agi->audio > -1), argc, argv);
 	for (;;) {
 		if (needhup) {
 			needhup = 0;
 			dead = 1;
-			if (pid > -1) {
-				kill(pid, SIGHUP);
-			} else if (agi->fast) {
-				send(agi->ctrl, "HANGUP\n", 7, MSG_OOB);
+			if (send_sighup) {
+				if (pid > -1) {
+					kill(pid, SIGHUP);
+				} else if (agi->fast) {
+					send(agi->ctrl, "HANGUP\n", 7, MSG_OOB);
+				}
 			}
 		}
 		ms = -1;
@@ -2734,8 +2743,7 @@
 		}
 	}
 	/* Notify process */
-	sighup = pbx_builtin_getvar_helper(chan, "AGISIGHUP");
-	if (ast_strlen_zero(sighup) || !ast_false(sighup)) {
+	if (send_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));




More information about the asterisk-commits mailing list