Update the ParkedCall application to grab the first available parked call if no
authorRussell Bryant <russell@russellbryant.com>
Tue, 13 Nov 2007 20:30:13 +0000 (20:30 +0000)
committerRussell Bryant <russell@russellbryant.com>
Tue, 13 Nov 2007 20:30:13 +0000 (20:30 +0000)
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

CHANGES
res/res_features.c

diff --git a/CHANGES b/CHANGES
index bde8bb6..1ec628d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -255,6 +255,9 @@ Call Features (res_features) Changes
      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
      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
 ------------------------
index ca4f6c6..c29ff25 100644 (file)
@@ -138,7 +138,8 @@ static char *descrip = "ParkedCall(exten): "
 "Used to connect to a parked call.  This application is always\n"
 "registered internally and does not need to be explicitly added\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";
 
@@ -2254,22 +2255,17 @@ static int park_exec(struct ast_channel *chan, void *data)
        struct ast_channel *peer=NULL;
        struct parkeduser *pu;
        struct ast_context *con;
-
-       int park;
+       int park = 0;
        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);
 
-       park = atoi((char *)data);
+       if (park)
+               park = atoi((char *)data);
 
        AST_LIST_LOCK(&parkinglot);
        AST_LIST_TRAVERSE_SAFE_BEGIN(&parkinglot, pu, list) {
-               if (pu->parkingnum == park) {
+               if (!data || pu->parkingnum == park) {
                        AST_LIST_REMOVE_CURRENT(list);
                        break;
                }