Merged revisions 331418 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/10

........
  r331418 | rmudgett | 2011-08-10 13:25:08 -0500 (Wed, 10 Aug 2011) | 6 lines
  
  Revert -r318141.  It was a band-aid that only partially fixed parking.
  
  A better fix is on reviewboard review 1358.
  
  (issue ASTERISK-17374)
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@331419 65c4cc65-6c06-0410-ace0-fbb531ad65f3
certified/11.2
Richard Mudgett 14 years ago
parent dc9513a69d
commit 02ecb12f64

@ -39,7 +39,6 @@ Text Messaging
Parking Parking
------- -------
* parkedmusicclass can now be set for non-default parking lots. * parkedmusicclass can now be set for non-default parking lots.
* ParkedCall application can now specify a specific parkinglot.
Asterisk Manager Interface Asterisk Manager Interface
-------------------------- --------------------------
@ -208,8 +207,6 @@ Applications
------------ ------------
* Added 'v' option to MeetMe to play voicemail greetings when a user joins/leaves * Added 'v' option to MeetMe to play voicemail greetings when a user joins/leaves
a MeetMe conference a MeetMe conference
* Added ability to include '@parkinglot' to ParkedCall extension in order to specify
a specific parkinglot on which to search the extension.
Asterisk Database Asterisk Database
----------------- -----------------

@ -213,22 +213,14 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
Answer a parked call. Answer a parked call.
</synopsis> </synopsis>
<syntax> <syntax>
<parameter name="exten" required="true" argsep="@"> <parameter name="exten" required="true" />
<argument name="exten" required="true">
<para>Specify extension.</para>
</argument>
<argument name="parkinglot">
<para>Optionally specify a parkinglot.<literal>exten</literal>.</para>
</argument>
</parameter>
</syntax> </syntax>
<description> <description>
<para>Used to connect to a parked call. This application is always <para>Used to connect to a parked call. This application is always
registered internally and does not need to be explicitly added registered internally and does not need to be explicitly added
into the dialplan, although you should include the <literal>parkedcalls</literal> into the dialplan, although you should include the <literal>parkedcalls</literal>
context. If no extension is provided, then the first available context. If no extension is provided, then the first available
parked call will be acquired. If <literal>parkinglot</literal> is included,the parked call will be acquired.</para>
parkinglot with that name will be used to seek the extension.</para>
</description> </description>
<see-also> <see-also>
<ref type="application">Park</ref> <ref type="application">Park</ref>
@ -616,18 +608,6 @@ static int find_parkinglot_by_exten_cb(void *obj, void *args, int flags)
return 0; return 0;
} }
static int find_parkinglot_by_name_cb(void *obj, void *args, int flags)
{
struct ast_parkinglot *parkinglot = obj;
const char *parkname = args;
if (!strcmp(parkinglot->name, parkname)) {
return CMP_MATCH | CMP_STOP;
}
return 0;
}
int ast_parking_ext_valid(const char *exten_str, struct ast_channel *chan, const char *context) int ast_parking_ext_valid(const char *exten_str, struct ast_channel *chan, const char *context)
{ {
struct ast_exten *exten; struct ast_exten *exten;
@ -4530,29 +4510,12 @@ static int park_exec_full(struct ast_channel *chan, const char *data)
int park = 0; int park = 0;
struct ast_bridge_config config; struct ast_bridge_config config;
struct ast_parkinglot *parkinglot; struct ast_parkinglot *parkinglot;
const char *lotname_split = NULL; /* name of the parking lot if an '@' symbol is included in data */
if (data) { if (data) {
if (sscanf(data, "%u", &park) != 1) { park = atoi((char *) data);
/* Something went wrong when parsing the extension */
ast_log(LOG_WARNING, "Could not parse extension from '%s'\n", data);
return -1;
}
if ((lotname_split = strchr(data, (int)'@'))) {
lotname_split++;
}
}
/*
* If we found an '@' in data, we want to specify the parkinglot used by its name.
* otherwise we just search by position.
*/
if (lotname_split) {
parkinglot = ao2_callback(parkinglots, 0, find_parkinglot_by_name_cb, (void *) (lotname_split));
} else {
parkinglot = ao2_callback(parkinglots, 0, find_parkinglot_by_position_cb, (void *) &park);
} }
parkinglot = ao2_callback(parkinglots, 0, find_parkinglot_by_position_cb, (void *) &park);
if (!parkinglot) if (!parkinglot)
parkinglot = default_parkinglot; parkinglot = default_parkinglot;

Loading…
Cancel
Save