diff options
author | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-05-15 19:57:02 +0000 |
---|---|---|
committer | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-05-15 19:57:02 +0000 |
commit | 97c59d0bace7d0406e2ab6e9599bb997bb93f998 (patch) | |
tree | fa9db74cdfdf0527cbad076d76390ac709c947af | |
parent | 697b51986764017bdafba82e1b5eadbcfcbf6db9 (diff) |
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: http://svn.digium.com/svn/asterisk/trunk@64427 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | res/res_features.c | 25 |
1 files changed, 2 insertions, 23 deletions
diff --git a/res/res_features.c b/res/res_features.c index d41010e8c..f9e1cdbff 100644 --- a/res/res_features.c +++ b/res/res_features.c @@ -336,23 +336,6 @@ static enum ast_device_state metermaidstate(const char *data) 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 \note We put the user in the parking list, then wake up the parking thread to be sure it looks 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"); if (!ast_strlen_zero(parkingexten)) { 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); return 0; /* Continue execution if possible */ } ast_copy_string(pu->parkingexten, parkingexten, sizeof(pu->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 { /* Select parking space within range */ parking_range = parking_stop - parking_start+1; |