[svn-commits] file: trunk r226890 - in /trunk: ./ apps/app_dial.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Nov 2 12:09:00 CST 2009


Author: file
Date: Mon Nov  2 12:08:54 2009
New Revision: 226890

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=226890
Log:
Merged revisions 226889 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r226889 | file | 2009-11-02 14:08:11 -0400 (Mon, 02 Nov 2009) | 11 lines
  
  Fix a bug where the recorded privacy introduction file would not get removed if the caller hung up
  while the called party had not yet answered.
  
  This was fixed by introducing an argument to the 'n' option which, when enabled, removes the introduction
  file under all scenarios. This was done to preserve the behavior that has existed for quite some time.
  
  (closes issue #14674)
  Reported by: ulogic
  Patches:
        bug14674.patch uploaded by jpeeler (license 325)
........

Modified:
    trunk/   (props changed)
    trunk/apps/app_dial.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.

Modified: trunk/apps/app_dial.c
URL: http://svnview.digium.com/svn/asterisk/trunk/apps/app_dial.c?view=diff&rev=226890&r1=226889&r2=226890
==============================================================================
--- trunk/apps/app_dial.c (original)
+++ trunk/apps/app_dial.c Mon Nov  2 12:08:54 2009
@@ -264,6 +264,13 @@
 					Macro()</para></warning>
 				</option>
 				<option name="n">
+				        <argument name="delete">
+					        <para>With <replaceable>delete</replaceable> either not specified or set to <literal>0</literal>,
+						the recorded introduction will not be deleted if the caller hangs up while the remote party has not
+						yet answered.</para>
+						<para>With <replaceable>delete</replaceable> set to <literal>1</literal>, the introduction will
+						always be deleted.</para>
+					</argument>
 					<para>This option is a modifier for the call screening/privacy mode. (See the 
 					<literal>p</literal> and <literal>P</literal> options.) It specifies
 					that no introductions are to be saved in the <directory>priv-callerintros</directory>
@@ -523,6 +530,7 @@
 	OPT_ARG_PRIVACY,
 	OPT_ARG_DURATION_STOP,
 	OPT_ARG_OPERMODE,
+	OPT_ARG_SCREEN_NOINTRO,
 	/* note: this entry _MUST_ be the last one in the enum */
 	OPT_ARG_ARRAY_SIZE,
 };
@@ -547,7 +555,7 @@
 	AST_APP_OPTION_ARG('L', OPT_DURATION_LIMIT, OPT_ARG_DURATION_LIMIT),
 	AST_APP_OPTION_ARG('m', OPT_MUSICBACK, OPT_ARG_MUSICBACK),
 	AST_APP_OPTION_ARG('M', OPT_CALLEE_MACRO, OPT_ARG_CALLEE_MACRO),
-	AST_APP_OPTION('n', OPT_SCREEN_NOINTRO),
+	AST_APP_OPTION_ARG('n', OPT_SCREEN_NOINTRO, OPT_ARG_SCREEN_NOINTRO),
 	AST_APP_OPTION('N', OPT_SCREEN_NOCALLERID),
 	AST_APP_OPTION('o', OPT_ORIGINAL_CLID),
 	AST_APP_OPTION_ARG('O', OPT_OPERMODE, OPT_ARG_OPERMODE),
@@ -1581,6 +1589,7 @@
 	int result = 0;
 	char *parse;
 	int opermode = 0;
+	int delprivintro = 0;
 	AST_DECLARE_APP_ARGS(args,
 		AST_APP_ARG(peers);
 		AST_APP_ARG(timeout);
@@ -1619,6 +1628,15 @@
 		ast_log(LOG_WARNING, "Dial requires an argument (technology/number)\n");
 		pbx_builtin_setvar_helper(chan, "DIALSTATUS", pa.status);
 		goto done;
+	}
+
+	if (ast_test_flag64(&opts, OPT_SCREEN_NOINTRO) && !ast_strlen_zero(opt_args[OPT_ARG_SCREEN_NOINTRO])) {
+		delprivintro = atoi(opt_args[OPT_ARG_SCREEN_NOINTRO]);
+
+		if (delprivintro < 0 || delprivintro > 1) {
+			ast_log(LOG_WARNING, "Unknown argument %d specified to n option, ignoring\n", delprivintro);
+			delprivintro = 0;
+		}
 	}
 
 	if (ast_test_flag64(&opts, OPT_OPERMODE)) {
@@ -2323,6 +2341,16 @@
 		sentringing = 0;
 		ast_indicate(chan, -1);
 	}
+
+	if (delprivintro && ast_fileexists(pa.privintro, NULL, NULL) > 0) {
+		ast_filedelete(pa.privintro, NULL);
+		if (ast_fileexists(pa.privintro, NULL, NULL) > 0) {
+			ast_log(LOG_NOTICE, "privacy: ast_filedelete didn't do its job on %s\n", pa.privintro);
+		} else {
+			ast_verb(3, "Successfully deleted %s intro file\n", pa.privintro);
+		}
+	}
+
 	ast_channel_early_bridge(chan, NULL);
 	hanguptree(outgoing, NULL, 0); /* In this case, there's no answer anywhere */
 	pbx_builtin_setvar_helper(chan, "DIALSTATUS", pa.status);




More information about the svn-commits mailing list