Merged revisions 180383 via svnmerge from

https://origsvn.digium.com/svn/asterisk/trunk

................
  r180383 | mmichelson | 2009-03-05 13:14:14 -0600 (Thu, 05 Mar 2009) | 31 lines
  
  Merged revisions 180380 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r180380 | mmichelson | 2009-03-05 12:58:48 -0600 (Thu, 05 Mar 2009) | 25 lines
    
    Fix broken mailbox parsing when searchcontexts option is enabled.
    
    When using the searchcontexts option in voicemail.conf, the code
    made the assumption that all mailbox names defined were unique across
    all contexts. However, the code did nothing to actually enforce this
    assumption, nor did it do anything to alert a user that he may have
    created an ambiguity in his voicemail.conf file by defining the same
    mailbox name in multiple contexts.
    
    With this change, we now will issue a nice long warning if searchcontexts
    is on and we encounter the same mailbox name in multiple contexts and ignore
    any duplicates after the first box. Whether searchcontexts is enabled or not,
    if we come across a duplicate mailbox in the same context, then we will issue
    a warning and ignore the duplicated mailbox. I have also added a small note
    to voicemail.conf.sample in the explanation for searchcontexts explaining
    that you cannot define the same mailbox in multiple contexts if you have
    enabled the option.
    
    (closes issue #14599)
    Reported by: lmadsen
    Patches:
          14599.patch uploaded by mmichelson (license 60) (with slight modification)
    Tested by: lmadsen
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@180425 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Mark Michelson
2009-03-05 19:27:07 +00:00
parent 67358b6e50
commit 2876025927
2 changed files with 17 additions and 7 deletions

View File

@@ -9461,14 +9461,21 @@ static struct ast_vm_user *find_or_create(const char *context, const char *box)
struct ast_vm_user *vmu;
AST_LIST_TRAVERSE(&users, vmu, list) {
if (ast_test_flag((&globalflags), VM_SEARCH) && !strcasecmp(box, vmu->mailbox))
break;
if (context && (!strcasecmp(context, vmu->context)) && (!strcasecmp(box, vmu->mailbox)))
break;
if (ast_test_flag((&globalflags), VM_SEARCH) && !strcasecmp(box, vmu->mailbox)) {
if (strcasecmp(vmu->context, context)) {
ast_log(LOG_WARNING, "\nIt has been detected that you have defined mailbox '%s' in separate\
\n\tcontexts and that you have the 'searchcontexts' option on. This type of\
\n\tconfiguration creates an ambiguity that you likely do not want. Please\
\n\tamend your voicemail.conf file to avoid this situation.\n", box);
}
ast_log(LOG_WARNING, "Ignoring duplicated mailbox %s\n", box);
return NULL;
}
if (!strcasecmp(context, vmu->context) && !strcasecmp(box, vmu->mailbox)) {
ast_log(LOG_WARNING, "Ignoring duplicated mailbox %s in context %s\n", box, context);
return NULL;
}
}
if (vmu)
return vmu;
if (!(vmu = ast_calloc(1, sizeof(*vmu))))
return NULL;