aboutsummaryrefslogtreecommitdiffstats
path: root/apps/app_enumlookup.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/app_enumlookup.c')
-rwxr-xr-xapps/app_enumlookup.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/apps/app_enumlookup.c b/apps/app_enumlookup.c
index 48e007977..b59e66863 100755
--- a/apps/app_enumlookup.c
+++ b/apps/app_enumlookup.c
@@ -85,27 +85,27 @@ static int enumlookup_exec(struct ast_channel *chan, void *data)
static int dep_warning=0;
struct localuser *u;
+ if (!data || ast_strlen_zero(data)) {
+ ast_log(LOG_WARNING, "EnumLookup requires an argument (extension)\n");
+ return -1;
+ }
+
if (!dep_warning) {
ast_log(LOG_WARNING, "The application EnumLookup is deprecated. Please use the ENUMLOOKUP() function instead.\n");
- dep_warning=1;
+ dep_warning = 1;
}
+ LOCAL_USER_ADD(u);
+
tech[0] = '\0';
- if (!data || ast_strlen_zero(data)) {
- ast_log(LOG_WARNING, "EnumLookup requires an argument (extension)\n");
- res = 0;
- }
- LOCAL_USER_ADD(u);
- if (!res) {
- res = ast_get_enum(chan, data, dest, sizeof(dest), tech, sizeof(tech), NULL, NULL);
- printf("ENUM got '%d'\n", res);
- }
- LOCAL_USER_REMOVE(u);
+ res = ast_get_enum(chan, data, dest, sizeof(dest), tech, sizeof(tech), NULL, NULL);
+
if (!res) { /* Failed to do a lookup */
/* Look for a "busy" place */
ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101);
pbx_builtin_setvar_helper(chan, "ENUMSTATUS", "ERROR");
+ LOCAL_USER_REMOVE(u);
return 0;
}
pbx_builtin_setvar_helper(chan, "ENUMSTATUS", tech);
@@ -167,6 +167,9 @@ static int enumlookup_exec(struct ast_channel *chan, void *data)
res = 0;
}
}
+
+ LOCAL_USER_REMOVE(u);
+
return 0;
}