Update the ParkedCall application to grab the first available parked call if no

parked extension is provided as an argument.

(closes issue #10803)
Reported by: outtolunc
Patches: 
      res_features-parkedcall-any.diff4 uploaded by outtolunc (license 237)
	  - modified by me to work a bit differently ...


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89250 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.0
Russell Bryant 18 years ago
parent d24cee9a81
commit fa39f74761

@ -255,6 +255,9 @@ Call Features (res_features) Changes
features.conf. This means that features can be written a single time, and features.conf. This means that features can be written a single time, and
then mapped into groups of features for different key mappings or easier then mapped into groups of features for different key mappings or easier
access control. access control.
* Updated the ParkedCall application to allow you to not specify a parking
extension. If you don't specify a parking space to pick up, it will grab
the first one available.
Language Support Changes Language Support Changes
------------------------ ------------------------

@ -138,7 +138,8 @@ static char *descrip = "ParkedCall(exten): "
"Used to connect to a parked call. This application is always\n" "Used to connect to a parked call. This application is always\n"
"registered internally and does not need to be explicitly added\n" "registered internally and does not need to be explicitly added\n"
"into the dialplan, although you should include the 'parkedcalls'\n" "into the dialplan, although you should include the 'parkedcalls'\n"
"context.\n"; "context. If no extension is provided, then the first available\n"
"parked call will be acquired.\n";
static char *parkcall = "Park"; static char *parkcall = "Park";
@ -2254,22 +2255,17 @@ static int park_exec(struct ast_channel *chan, void *data)
struct ast_channel *peer=NULL; struct ast_channel *peer=NULL;
struct parkeduser *pu; struct parkeduser *pu;
struct ast_context *con; struct ast_context *con;
int park = 0;
int park;
struct ast_bridge_config config; struct ast_bridge_config config;
if (!data) {
ast_log(LOG_WARNING, "Parkedcall requires an argument (extension number)\n");
return -1;
}
u = ast_module_user_add(chan); u = ast_module_user_add(chan);
if (park)
park = atoi((char *)data); park = atoi((char *)data);
AST_LIST_LOCK(&parkinglot); AST_LIST_LOCK(&parkinglot);
AST_LIST_TRAVERSE_SAFE_BEGIN(&parkinglot, pu, list) { AST_LIST_TRAVERSE_SAFE_BEGIN(&parkinglot, pu, list) {
if (pu->parkingnum == park) { if (!data || pu->parkingnum == park) {
AST_LIST_REMOVE_CURRENT(list); AST_LIST_REMOVE_CURRENT(list);
break; break;
} }

Loading…
Cancel
Save