Merged revisions 103688 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r103688 | mmichelson | 2008-02-14 14:55:48 -0600 (Thu, 14 Feb 2008) | 9 lines Fix the new message count if delete=yes when using IMAP storage. (closes issue #11406) Reported by: jaroth Patches: deleteflag_v2.patch uploaded by jaroth (license 50) Tested by: jaroth ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@103689 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
parent
3f232df739
commit
f49884c1fc
|
@ -427,7 +427,6 @@ struct vm_state {
|
|||
#endif
|
||||
};
|
||||
|
||||
|
||||
#ifdef ODBC_STORAGE
|
||||
static char odbc_database[80];
|
||||
static char odbc_table[80];
|
||||
|
@ -662,7 +661,7 @@ static int play_record_review(struct ast_channel *chan, char *playfile, char *re
|
|||
signed char record_gain, struct vm_state *vms);
|
||||
static int vm_tempgreeting(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms, char *fmtc, signed char record_gain);
|
||||
static int vm_play_folder_name(struct ast_channel *chan, char *mbox);
|
||||
static int notify_new_message(struct ast_channel *chan, struct ast_vm_user *vmu, int msgnum, long duration, char *fmt, char *cidnum, char *cidname);
|
||||
static int notify_new_message(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms, int msgnum, long duration, char *fmt, char *cidnum, char *cidname);
|
||||
static void make_email_file(FILE *p, char *srcemail, struct ast_vm_user *vmu, int msgnum, char *context, char *mailbox, char *cidnum, char *cidname, char *attach, char *format, int duration, int attach_user_voicemail, struct ast_channel *chan, const char *category, int imap);
|
||||
static void apply_options(struct ast_vm_user *vmu, const char *options);
|
||||
static int is_valid_dtmf(const char *key);
|
||||
|
@ -2841,7 +2840,7 @@ static int copy_message(struct ast_channel *chan, struct ast_vm_user *vmu, int i
|
|||
ast_log(LOG_ERROR, "Recipient mailbox %s@%s is full\n", recip->mailbox, recip->context);
|
||||
}
|
||||
ast_unlock_path(todir);
|
||||
notify_new_message(chan, recip, recipmsgnum, duration, fmt, S_OR(chan->cid.cid_num, NULL), S_OR(chan->cid.cid_name, NULL));
|
||||
notify_new_message(chan, recip, NULL, recipmsgnum, duration, fmt, S_OR(chan->cid.cid_num, NULL), S_OR(chan->cid.cid_name, NULL));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -3403,7 +3402,7 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, struct leave_vm_
|
|||
}
|
||||
/* Notification and disposal needs to happen after the copy, though. */
|
||||
if (ast_fileexists(fn, NULL, NULL)) {
|
||||
notify_new_message(chan, vmu, msgnum, duration, fmt, S_OR(chan->cid.cid_num, NULL), S_OR(chan->cid.cid_name, NULL));
|
||||
notify_new_message(chan, vmu, vms, msgnum, duration, fmt, S_OR(chan->cid.cid_num, NULL), S_OR(chan->cid.cid_name, NULL));
|
||||
DISPOSE(dir, msgnum);
|
||||
}
|
||||
}
|
||||
|
@ -4183,7 +4182,7 @@ static void queue_mwi_event(const char *mbox, int new, int old)
|
|||
AST_EVENT_IE_END);
|
||||
}
|
||||
|
||||
static int notify_new_message(struct ast_channel *chan, struct ast_vm_user *vmu, int msgnum, long duration, char *fmt, char *cidnum, char *cidname)
|
||||
static int notify_new_message(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms, int msgnum, long duration, char *fmt, char *cidnum, char *cidname)
|
||||
{
|
||||
char todir[PATH_MAX], fn[PATH_MAX], ext_context[PATH_MAX], *stringp;
|
||||
int newmsgs = 0, oldmsgs = 0;
|
||||
|
@ -4230,9 +4229,6 @@ static int notify_new_message(struct ast_channel *chan, struct ast_vm_user *vmu,
|
|||
if (ast_test_flag(vmu, VM_DELETE))
|
||||
DELETE(todir, msgnum, fn);
|
||||
|
||||
#ifdef IMAP_STORAGE
|
||||
DELETE(todir, msgnum, fn);
|
||||
#endif
|
||||
/* Leave voicemail for someone */
|
||||
if (ast_app_has_voicemail(ext_context, NULL))
|
||||
ast_app_inboxcount(ext_context, &newmsgs, &oldmsgs);
|
||||
|
@ -4241,6 +4237,14 @@ static int notify_new_message(struct ast_channel *chan, struct ast_vm_user *vmu,
|
|||
|
||||
manager_event(EVENT_FLAG_CALL, "MessageWaiting", "Mailbox: %s@%s\r\nWaiting: %d\r\nNew: %d\r\nOld: %d\r\n", vmu->mailbox, vmu->context, ast_app_has_voicemail(ext_context, NULL), newmsgs, oldmsgs);
|
||||
run_externnotify(vmu->context, vmu->mailbox);
|
||||
|
||||
#ifdef IMAP_STORAGE
|
||||
DELETE(todir, msgnum, fn); /* Delete the file, but not the IMAP message */
|
||||
if (ast_test_flag(vmu, VM_DELETE)) { /* Delete the IMAP message if delete = yes */
|
||||
IMAP_DELETE(vms->curdir, vms->curmsg, vms->fn, vms);
|
||||
vms->newmessages--; /* Fix new message count */
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Reference in New Issue