Merged revisions 64426 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r64426 | russell | 2007-05-15 14:52:18 -0500 (Tue, 15 May 2007) | 3 lines Properly fix a problem that occurs when you set PARKINGEXTEN to an exten where a call is already parked. (issue #9723, patch by me) ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@64427 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
parent
5a482485f0
commit
16a9f0844f
1 changed files with 2 additions and 23 deletions
|
@ -336,23 +336,6 @@ static enum ast_device_state metermaidstate(const char *data)
|
||||||
return AST_DEVICE_INUSE;
|
return AST_DEVICE_INUSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Check to see if a parking space is in use
|
|
||||||
* \return non-zero if in use, zero if not in use
|
|
||||||
* \note Assumes parking_lock is locked
|
|
||||||
*/
|
|
||||||
static int check_parking_space_inuse(int space)
|
|
||||||
{
|
|
||||||
struct parkeduser *pu;
|
|
||||||
|
|
||||||
for (pu = parkinglot; pu; pu = pu->next) {
|
|
||||||
if (pu->parkingnum == space)
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! \brief Park a call
|
/*! \brief Park a call
|
||||||
\note We put the user in the parking list, then wake up the parking thread to be sure it looks
|
\note We put the user in the parking list, then wake up the parking thread to be sure it looks
|
||||||
after these channels too */
|
after these channels too */
|
||||||
|
@ -373,17 +356,13 @@ int ast_park_call(struct ast_channel *chan, struct ast_channel *peer, int timeou
|
||||||
parkingexten = pbx_builtin_getvar_helper(chan, "PARKINGEXTEN");
|
parkingexten = pbx_builtin_getvar_helper(chan, "PARKINGEXTEN");
|
||||||
if (!ast_strlen_zero(parkingexten)) {
|
if (!ast_strlen_zero(parkingexten)) {
|
||||||
if (ast_exists_extension(NULL, parking_con, parkingexten, 1, NULL)) {
|
if (ast_exists_extension(NULL, parking_con, parkingexten, 1, NULL)) {
|
||||||
|
ast_mutex_unlock(&parking_lock);
|
||||||
|
free(pu);
|
||||||
ast_log(LOG_WARNING, "Requested parking extension already exists: %s@%s\n", parkingexten, parking_con);
|
ast_log(LOG_WARNING, "Requested parking extension already exists: %s@%s\n", parkingexten, parking_con);
|
||||||
return 0; /* Continue execution if possible */
|
return 0; /* Continue execution if possible */
|
||||||
}
|
}
|
||||||
ast_copy_string(pu->parkingexten, parkingexten, sizeof(pu->parkingexten));
|
ast_copy_string(pu->parkingexten, parkingexten, sizeof(pu->parkingexten));
|
||||||
x = atoi(parkingexten);
|
x = atoi(parkingexten);
|
||||||
if (check_parking_space_inuse(x)) {
|
|
||||||
ast_mutex_unlock(&parking_lock);
|
|
||||||
free(pu);
|
|
||||||
ast_log(LOG_WARNING, "Requested parking space %d via PARKINGEXTEN, but it is in use!\n", x);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
/* Select parking space within range */
|
/* Select parking space within range */
|
||||||
parking_range = parking_stop - parking_start+1;
|
parking_range = parking_stop - parking_start+1;
|
||||||
|
|
Loading…
Reference in a new issue