diff options
Diffstat (limited to 'apps/app_directed_pickup.c')
-rwxr-xr-x | apps/app_directed_pickup.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/apps/app_directed_pickup.c b/apps/app_directed_pickup.c index e9282d262..df766366d 100755 --- a/apps/app_directed_pickup.c +++ b/apps/app_directed_pickup.c @@ -100,7 +100,6 @@ static int pickup_exec(struct ast_channel *chan, void *data) if (res) { ast_log(LOG_WARNING, "Unable to answer '%s'\n", chan->name); res = -1; - ast_mutex_unlock(&target->lock); goto out; } res = ast_queue_control(chan, AST_CONTROL_ANSWER); @@ -108,24 +107,21 @@ static int pickup_exec(struct ast_channel *chan, void *data) ast_log(LOG_WARNING, "Unable to queue answer on '%s'\n", chan->name); res = -1; - ast_mutex_unlock(&target->lock); goto out; } res = ast_channel_masquerade(target, chan); if (res) { ast_log(LOG_WARNING, "Unable to masquerade '%s' into '%s'\n", chan->name, target->name); res = -1; - ast_mutex_unlock(&target->lock); goto out; } - /* Done */ - ast_mutex_unlock(&target->lock); } else { ast_log(LOG_DEBUG, "No call pickup possible...\n"); res = -1; } - + /* Done */ out: + if (target) ast_mutex_unlock(&target->lock); LOCAL_USER_REMOVE(u); return res; |