From 8fc9d6d6fa70ea52375261c4e62ff1500916298b Mon Sep 17 00:00:00 2001
From: Jeff Peeler <jpeeler@digium.com>
Date: Fri, 29 Aug 2008 17:53:32 +0000
Subject: [PATCH] Added the option s to the Park application which will silence
 the announcement of the parking space number. Also, fixes the bug of just
 clearing the flags instead of actually parsing the arguments to Park.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@140491 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 CHANGES         | 1 +
 main/features.c | 8 ++++++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/CHANGES b/CHANGES
index c032471d0e..6cdf26b35c 100644
--- a/CHANGES
+++ b/CHANGES
@@ -112,6 +112,7 @@ Application Changes
    status variable SENDIMAGESTATUS to one of 'SUCCESS', 'FAILURE', or
    'UNSUPPORTED'.  This change makes SendImage() more consistent with other
    applications.
+ * Park has a new option, 's', which silences the announcement of the parking space number.
 
 SIP Changes
 -----------
diff --git a/main/features.c b/main/features.c
index 9d228acc2f..6aa717aec3 100644
--- a/main/features.c
+++ b/main/features.c
@@ -182,6 +182,7 @@ static char *descrip2 =
 " options - A list of options for this parked call.  Valid options are:\n"
 "    'r' - Send ringing instead of MOH to the parked call.\n"
 "    'R' - Randomize the selection of a parking space.\n"
+"    's' - Silence announcement of the parking space number.\n"
 "";
 
 static struct ast_app *monitor_app = NULL;
@@ -431,6 +432,8 @@ enum ast_park_call_options {
 	/*! Randomly choose a parking spot for the caller instead of choosing
 	 *  the first one that is available. */
 	AST_PARK_OPT_RANDOMIZE = (1 << 1),
+	/*! Do not announce the parking number */
+	AST_PARK_OPT_SILENCE = (1 << 2),
 };
 
 struct ast_park_call_args {
@@ -625,7 +628,7 @@ static int ast_park_call_full(struct ast_channel *chan, struct ast_channel *peer
 	if (!con)	/* Still no context? Bad */
 		ast_log(LOG_ERROR, "Parking context '%s' does not exist and unable to create\n", parkinglot->parking_con);
 	/* Tell the peer channel the number of the parking space */
-	if (peer && (ast_strlen_zero(args->orig_chan_name) || !strcasecmp(peer->name, args->orig_chan_name))) { /* Only say number if it's a number and the channel hasn't been masqueraded away */
+	if (peer && !ast_test_flag(args, AST_PARK_OPT_SILENCE) && (ast_strlen_zero(args->orig_chan_name) || !strcasecmp(peer->name, args->orig_chan_name))) { /* Only say number if it's a number and the channel hasn't been masqueraded away */
 		/* If a channel is masqueraded into peer while playing back the parking slot number do not continue playing it back. This is the case if an attended transfer occurs. */
 		ast_set_flag(peer, AST_FLAG_MASQ_NOSTREAM);
 		ast_say_digits(peer, pu->parkingnum, "", peer->language);
@@ -2602,6 +2605,7 @@ struct ast_parkinglot *find_parkinglot(const char *name)
 AST_APP_OPTIONS(park_call_options, BEGIN_OPTIONS
 	AST_APP_OPTION('r', AST_PARK_OPT_RINGING),
 	AST_APP_OPTION('R', AST_PARK_OPT_RANDOMIZE),
+	AST_APP_OPTION('s', AST_PARK_OPT_SILENCE),
 END_OPTIONS );
 
 /*! \brief Park a call */
@@ -2670,7 +2674,7 @@ static int park_call_exec(struct ast_channel *chan, void *data)
 			}
 		}
 
-		ast_app_parse_options(park_call_options, &flags, NULL, NULL);
+		ast_app_parse_options(park_call_options, &flags, NULL, app_args.options);
 		args.flags = flags.flags;
 
 		res = ast_park_call_full(chan, chan, &args);
-- 
GitLab