[asterisk-bugs] [JIRA] (ASTERISK-24786) Asterisk terminates when playing a voicemail stored in LDAP
Graham Barnett (JIRA)
noreply at issues.asterisk.org
Fri Feb 13 08:35:34 CST 2015
[ https://issues.asterisk.org/jira/browse/ASTERISK-24786?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Graham Barnett updated ASTERISK-24786:
--------------------------------------
Affects Version/s: 13.1.0
> Asterisk terminates when playing a voicemail stored in LDAP
> -----------------------------------------------------------
>
> Key: ASTERISK-24786
> URL: https://issues.asterisk.org/jira/browse/ASTERISK-24786
> Project: Asterisk
> Issue Type: Bug
> Security Level: None
> Components: Applications/app_voicemail/IMAP
> Affects Versions: 13.1.0, 13.2.0
> Reporter: Graham Barnett
> Severity: Critical
>
> Symptom
> 1. If user has no greetings and user opens mailbox (*97) and tries to play a message, asterisk terminates
> 2. If user has at least one greeting, playing back a message gives:
> [14626][C-0000002c]: app_voicemail.c:8677 play_message: No origtime?!
> Why?
> vms_x = get_vm_state_by_imapuser(user, x)
> caches existing states by user.
> The states are looked up my imap version, user name, interactive=2 || interactive matches.
> Why does this matter?
> int fold = 0;
> vms_p = get_vm_state_by_imapuser(vmu->imapuser, 0);
> if (!vms_p) {
> vms_p = get_vm_state_by_mailbox(mailbox, context, 1);
> }
> ret = init_mailstream(vms_p, fold);
> vs
> if (!(vmu = find_user(NULL, context, mailbox))) {
> RETRIEVE(tempfile, -1, vmu->mailbox, vmu->context);
> res = imap_retrieve_greeting(dir, msgnum, vmu);
> if (!(vms_p = get_vm_state_by_mailbox(vmu->mailbox, vmu->context, 1)) &&
> if (init_mailstream(vms_p, GREETINGS_FOLDER) || !vms_p->mailstream) {
> i.e. the mailstream can be left pointed at the GREETINGS and not the Inbox
> And why does that matter?
> imap_retrieve_file
> if (!(vms = get_vm_state_by_mailbox(vmu->mailbox, vmu->context, 1)) && !(vms = get_vm_state_by_mailbox(vmu->mailbox, vmu->context, 0))) {
> # CAN BE WRONG MAILSTREAM !!!!!
> header_content = mail_fetchheader (vms->mailstream, vms->msgArray[msgnum]);
> What is the fix?
> We need to init the mailstream in imap_retrieve_file after getting the vm_state_by_mailbox
> /* Ensure we have the correct stream
> */
> init_mailstream(vms, 0);
> if (!vms->mailstream) {
> ast_log(AST_LOG_ERROR, "IMAP mailstream for %s is NULL\n", vmu->mailbox);
> res = -1;
> goto exit;
> }
> Will post patch file later.
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list