[asterisk-bugs] [JIRA] (ASTERISK-23713) Voicemail on FS overwrites last message when last index = MSGLIMIT

Rusty Newton (JIRA) noreply at issues.asterisk.org
Tue May 6 13:41:43 CDT 2014


    [ https://issues.asterisk.org/jira/browse/ASTERISK-23713?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=217960#comment-217960 ] 

Rusty Newton commented on ASTERISK-23713:
-----------------------------------------

[~elguero]

bq. Your scenario above is a tricky one. If a user deletes the messages, they can also un-delete them until they hangup. The index will count those messages and include that as part of the number of messages under the user's mailbox. When saving a message as new, it is counting how many messages the user has (3) and the maximum messages the user is allowed (3). If I recall properly, it does not just mark the message the user listened to as unheard (new), it actually makes a copy of the file and therefore the maximum message limit for the user kicks in.

I see.. that is tricky. I hope whoever works on this can create a behavior that is more sensible to the end user of the voicemail system, as they will truly not know what is going on and instead just be frustrated at the inability to save their message in a folder that appears to have room.

Thank you guys for looking into it.

> Voicemail on FS overwrites last message when last index = MSGLIMIT
> ------------------------------------------------------------------
>
>                 Key: ASTERISK-23713
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-23713
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Applications/app_voicemail
>    Affects Versions: SVN, 12.2.0
>         Environment: app_voicemail delivery on filesystem.
> Any asterisk supported platform is probably affected.
>            Reporter: Miguel Tavares
>            Assignee: Rusty Newton
>
> When leaving a voicemail the function last_message_index will stop at index only until the default or configured max messages (vmu->maxmsg) although it should continue until MAXMSGLIMIT.
> Example, let's say the asterisk admin set the maximum messages to 10, the user received 10 messages and then deleted 9 apart from the last one. In the filesystem the files msg0010.txt and msg0010.wav will be present.
> The last_message_index will detect that that's the only message available but then  when finding out what's the index it will stop at 9 (the configure maximum when counting from 0) and return that as the last message index, making he voicemail app to overwrite the previous existing last message.
> Possible fix, in app_voicemail.c
> {noformat}
> 112a113
> > #include <string.h>
> 4434c4435
> <       unsigned char map[MAXMSGLIMIT] = "";
> ---
> >       unsigned char map[MAXMSGLIMIT];
> 4440a4442
> >     memset (map, 0, sizeof(map)); //set the memory to 0 for Safety sake.
> 4458c4460
> <       for (x = 0; x < vmu->maxmsg; x++) {
> ---
> >       for (x = 0; x < MAXMSGLIMIT; x++) {
> {noformat}
> The important change is running the for cycle until MAXMSGLIMIT but as far as I know there's no guarantee that memory allocated in the stack is zeroed so that's why I also included the memset call.



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list