aboutsummaryrefslogtreecommitdiffstats
path: root/apps/app_directed_pickup.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/app_directed_pickup.c')
-rwxr-xr-xapps/app_directed_pickup.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/apps/app_directed_pickup.c b/apps/app_directed_pickup.c
index 66aab01fe..836d02b42 100755
--- a/apps/app_directed_pickup.c
+++ b/apps/app_directed_pickup.c
@@ -57,6 +57,13 @@ static int pickup_exec(struct ast_channel *chan, void *data)
char *tmp = NULL, *exten = NULL, *context = NULL;
char workspace[256] = "";
+ if (!data || ast_strlen_zero(data)) {
+ ast_log(LOG_WARNING, "Pickup requires an argument (extension) !\n");
+ return -1;
+ }
+
+ LOCAL_USER_ADD(u);
+
/* Get the extension and context if present */
exten = data;
context = strchr(data, '@');
@@ -65,14 +72,6 @@ static int pickup_exec(struct ast_channel *chan, void *data)
context++;
}
- /* Make sure we atleast have an extension to work with */
- if (!exten) {
- ast_log(LOG_WARNING, "%s requires atleast one argument (extension)\n", app);
- return -1;
- }
-
- LOCAL_USER_ADD(u);
-
/* Find a channel to pickup */
origin = ast_get_channel_by_exten_locked(exten, context);
if (origin) {
@@ -121,7 +120,9 @@ static int pickup_exec(struct ast_channel *chan, void *data)
}
/* Done */
out:
- if (target) ast_mutex_unlock(&target->lock);
+ if (target)
+ ast_mutex_unlock(&target->lock);
+
LOCAL_USER_REMOVE(u);
return res;