mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-20 16:50:14 +00:00
Merged revisions 43640 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ................ r43640 | tilghman | 2006-09-25 17:04:47 -0500 (Mon, 25 Sep 2006) | 12 lines Merged revisions 43634 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r43634 | tilghman | 2006-09-25 16:14:41 -0500 (Mon, 25 Sep 2006) | 4 lines Two bugs when forwarding voicemail (Issue 7824): 1) delete=yes was ignored 2) maxmessages was ignored ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@43641 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -3784,19 +3784,8 @@ static int forward_message(struct ast_channel *chan, char *context, struct vm_st
|
||||
BODY *body;
|
||||
char *header_content;
|
||||
char *temp;
|
||||
#else
|
||||
struct ast_config *mif;
|
||||
char sys[256];
|
||||
char miffile[256];
|
||||
char callerid[512];
|
||||
char tmp[256];
|
||||
char ext_context[256]="";
|
||||
#endif
|
||||
char username[70]="";
|
||||
char todir[256];
|
||||
int todircount=0;
|
||||
int duration;
|
||||
char fn[256];
|
||||
int res = 0, cmd = 0;
|
||||
struct ast_vm_user *receiver = NULL, *vmtmp;
|
||||
AST_LIST_HEAD_NOLOCK_STATIC(extensions, ast_vm_user);
|
||||
@@ -3993,74 +3982,7 @@ static int forward_message(struct ast_channel *chan, char *context, struct vm_st
|
||||
/* NULL category for IMAP storage */
|
||||
sendmail(myserveremail, vmtmp, todircount, vmtmp->context, vmtmp->mailbox, chan->cid.cid_num, chan->cid.cid_name, fn, fmt, duration, attach_user_voicemail, chan, NULL);
|
||||
#else
|
||||
|
||||
/* if (ast_play_and_wait(chan, "vm-savedto"))
|
||||
break;
|
||||
*/
|
||||
snprintf(todir, sizeof(todir), "%s%s/%s/INBOX", VM_SPOOL_DIR, vmtmp->context, vmtmp->mailbox);
|
||||
snprintf(sys, sizeof(sys), "mkdir -p %s\n", todir);
|
||||
snprintf(ext_context, sizeof(ext_context), "%s@%s", vmtmp->mailbox, vmtmp->context);
|
||||
ast_safe_system(sys);
|
||||
|
||||
res = count_messages(receiver, todir);
|
||||
|
||||
if ( (res == ERROR_LOCK_PATH) || (res < 0) ) {
|
||||
if (res == ERROR_LOCK_PATH)
|
||||
ast_log(LOG_WARNING, "Unable to lock the directory %s to forward the requested vmail msg!\n", todir);
|
||||
else
|
||||
ast_log(LOG_WARNING, "Unable to determine how many msgs are in the destination folder!\n");
|
||||
break;
|
||||
}
|
||||
todircount = res;
|
||||
ast_copy_string(tmp, fmt, sizeof(tmp));
|
||||
stringp = tmp;
|
||||
while ((s = strsep(&stringp, "|"))) {
|
||||
/* XXX This is a hack -- we should use build_filename or similar XXX */
|
||||
if (!strcasecmp(s, "wav49"))
|
||||
s = "WAV";
|
||||
snprintf(sys, sizeof(sys), "cp %s/msg%04d.%s %s/msg%04d.%s\n", dir, curmsg, s, todir, todircount, s);
|
||||
ast_safe_system(sys);
|
||||
}
|
||||
snprintf(sys, sizeof(sys), "cp %s/msg%04d.txt %s/msg%04d.txt\n", dir, curmsg, todir, todircount);
|
||||
ast_safe_system(sys);
|
||||
snprintf(fn, sizeof(fn), "%s/msg%04d", todir,todircount);
|
||||
|
||||
STORE(todir, vmtmp->mailbox, vmtmp->context, todircount);
|
||||
|
||||
/* load the information on the source message so we can send an e-mail like a new message */
|
||||
snprintf(miffile, sizeof(miffile), "%s/msg%04d.txt", dir, curmsg);
|
||||
if ((mif=ast_config_load(miffile))) {
|
||||
const char *category = ast_variable_retrieve(mif, NULL, "category");
|
||||
|
||||
/* set callerid and duration variables */
|
||||
snprintf(callerid, sizeof(callerid), "FWD from: %s from %s", sender->fullname, ast_variable_retrieve(mif, NULL, "callerid"));
|
||||
s = ast_variable_retrieve(mif, NULL, "duration");
|
||||
if (s)
|
||||
duration = atoi(s);
|
||||
else
|
||||
duration = 0;
|
||||
if (!ast_strlen_zero(vmtmp->email)) {
|
||||
int attach_user_voicemail = ast_test_flag((&globalflags), VM_ATTACH);
|
||||
char *myserveremail = serveremail;
|
||||
attach_user_voicemail = ast_test_flag(vmtmp, VM_ATTACH);
|
||||
if (!ast_strlen_zero(vmtmp->serveremail))
|
||||
myserveremail = vmtmp->serveremail;
|
||||
/*XXX POSSIBLE ISSUE FOR IMAP STORAGE but no idea how its an else statement XXX*/
|
||||
sendmail(myserveremail, vmtmp, todircount, vmtmp->context, vmtmp->mailbox, chan->cid.cid_num, chan->cid.cid_name, fn, tmp, duration, attach_user_voicemail, chan, category);
|
||||
}
|
||||
|
||||
if (!ast_strlen_zero(vmtmp->pager)) {
|
||||
char *myserveremail = serveremail;
|
||||
if (!ast_strlen_zero(vmtmp->serveremail))
|
||||
myserveremail = vmtmp->serveremail;
|
||||
sendpage(myserveremail, vmtmp->pager, todircount, vmtmp->context, vmtmp->mailbox, chan->cid.cid_num, chan->cid.cid_name, duration, vmtmp, category);
|
||||
}
|
||||
|
||||
ast_config_destroy(mif); /* or here */
|
||||
}
|
||||
/* Leave voicemail for someone */
|
||||
manager_event(EVENT_FLAG_CALL, "MessageWaiting", "Mailbox: %s\r\nWaiting: %d\r\n", ext_context, has_voicemail(ext_context, NULL));
|
||||
run_externnotify(vmtmp->context, vmtmp->mailbox);
|
||||
copy_message(chan, sender, 0, curmsg, 0, vmtmp, fmt);
|
||||
#endif
|
||||
saved_messages++;
|
||||
AST_LIST_REMOVE_CURRENT(&extensions, list);
|
||||
|
||||
Reference in New Issue
Block a user