diff options
Diffstat (limited to 'apps/app_image.c')
-rwxr-xr-x | apps/app_image.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/apps/app_image.c b/apps/app_image.c index e0a48c106..e54c90820 100755 --- a/apps/app_image.c +++ b/apps/app_image.c @@ -60,26 +60,38 @@ static int sendimage_exec(struct ast_channel *chan, void *data) { int res = 0; struct localuser *u; + + LOCAL_USER_ADD(u); + if (!data || !strlen((char *)data)) { ast_log(LOG_WARNING, "SendImage requires an argument (filename)\n"); + LOCAL_USER_REMOVE(u); return -1; } - LOCAL_USER_ADD(u); + if (!ast_supports_images(chan)) { /* Does not support transport */ - if (ast_exists_extension(chan, chan->context, chan->exten, chan->priority + 101, chan->cid.cid_num)) - chan->priority += 100; + ast_goto_if_exists(chan, chan->context, chan->exten, chan->priority + 101); + LOCAL_USER_REMOVE(u); return 0; } + res = ast_send_image(chan, data); + LOCAL_USER_REMOVE(u); + return res; } int unload_module(void) { + int res; + + res = ast_unregister_application(app); + STANDARD_HANGUP_LOCALUSERS; - return ast_unregister_application(app); + + return res; } int load_module(void) |