From: Mark Spencer Date: Mon, 19 Apr 2004 23:27:37 +0000 (+0000) Subject: Merge Matt's extern notify patch X-Git-Tag: 1.0.0-rc1~717 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=776a66f5db225882d452fd68330828588fff372a;p=thirdparty%2Fasterisk.git Merge Matt's extern notify patch git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2714 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 6af234b556..c5db096e9f 100755 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -1372,6 +1372,18 @@ static void free_zone(struct vm_zone *z) free(z); } +static void run_externnotify(char *context, char *extension, int numvoicemails) +{ + char arguments[255]; + + if(externnotify[0]) { + strncpy(arguments, externnotify, sizeof(arguments)); + snprintf(arguments, sizeof(arguments)-1, "%s %s %s %d&", externnotify, context, extension, numvoicemails); + ast_log(LOG_DEBUG,"Executing %s\n", arguments); + ast_safe_system(arguments); + } +} + static int leave_voicemail(struct ast_channel *chan, char *ext, int silent, int busy, int unavail) { char comment[256]; @@ -1567,16 +1579,7 @@ leave_vm_out: manager_event(EVENT_FLAG_CALL, "MessageWaiting", "Mailbox: %s\r\nWaiting: %d\r\n", ext, ast_app_has_voicemail(ext)); /* If an external program is specified to be run after leaving a voicemail */ - if (externnotify[0]) { - char arguments[255]; - ast_log(LOG_DEBUG, "App voicemail ran the external notify program\n"); - strncpy(tmp, externnotify, sizeof(tmp)); - snprintf(arguments, sizeof(arguments)-1, " %s %s %d&", chan->context, ext, ast_app_has_voicemail(ext)); - strncat(tmp, arguments, sizeof(tmp) - strlen(arguments)); - tmp[sizeof(tmp) - 1] = '\0'; -// ast_verbose(VERBOSE_PREFIX_3,"Executing %s\n", tmp); - ast_safe_system(tmp); - } + run_externnotify(chan->context, ext, ast_app_has_voicemail(ext)); return res; } @@ -2375,15 +2378,7 @@ static int forward_message(struct ast_channel *chan, char *context, char *dir, i } /* Leave voicemail for someone */ manager_event(EVENT_FLAG_CALL, "MessageWaiting", "Mailbox: %s\r\nWaiting: %d\r\n", vmtmp->mailbox, ast_app_has_voicemail(vmtmp->mailbox)); - if (externnotify[0]) { - char arguments[255]; - strncpy(tmp, externnotify, sizeof(tmp)); - snprintf(arguments, sizeof(arguments)-1, " %s %s %d&", chan->context, vmtmp->mailbox, ast_app_has_voicemail(vmtmp->mailbox)); - strncat(tmp, arguments, sizeof(tmp) - strlen(arguments)); - tmp[sizeof(tmp) - 1] = '\0'; - // ast_verbose(VERBOSE_PREFIX_3, "executing %s\n", tmp); - ast_safe_system(tmp); - } + run_externnotify(chan->context, vmtmp->mailbox, ast_app_has_voicemail(vmtmp->mailbox)); saved_messages++; vmfree = vmtmp; @@ -3035,15 +3030,8 @@ out: free_user(vmu); if (valid) { manager_event(EVENT_FLAG_CALL, "MessageWaiting", "Mailbox: %s\r\nWaiting: %d\r\n", vms.username, ast_app_has_voicemail(vms.username)); - if (externnotify[0]) { - char arguments[255]; - strncpy(tmp, externnotify, sizeof(tmp)); - snprintf(arguments, sizeof(arguments)-1, " %s %s %d&", chan->context, vms.username, ast_app_has_voicemail(vms.username)); - strncat(tmp, arguments, sizeof(tmp) - strlen(arguments)); - tmp[sizeof(tmp) - 1] = '\0'; - // ast_verbose(VERBOSE_PREFIX_3, "executing: %s\n"); - ast_safe_system(tmp); - } + run_externnotify(chan->context, vms.username, ast_app_has_voicemail(vms.username)); + } LOCAL_USER_REMOVE(u); @@ -3351,7 +3339,7 @@ static int load_config(void) if ((notifystr = ast_variable_retrieve(cfg, "general", "externnotify"))) { strncpy(externnotify, notifystr, sizeof(externnotify) - 1); - //ast_verbose(VERBOSE_PREFIX_3, "found externnotify: %s\n", externnotify); + ast_log(LOG_DEBUG, "found externnotify: %s\n", externnotify); } else { externnotify[0] = '\0'; }