aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--UPGRADE.txt3
-rw-r--r--apps/app_voicemail.c26
-rw-r--r--configs/voicemail.conf.sample3
3 files changed, 22 insertions, 10 deletions
diff --git a/UPGRADE.txt b/UPGRADE.txt
index db9eab845..76e557773 100644
--- a/UPGRADE.txt
+++ b/UPGRADE.txt
@@ -133,7 +133,8 @@ Applications:
* The application VoiceMailMain now only matches the 'default' context if
none is specified in the arguments. (This was the previously
- documented behavior, however, we didn't follow that behavior.)
+ documented behavior, however, we didn't follow that behavior.) The old
+ behavior can be restored by setting searchcontexts=yes in voicemail.conf.
Queues:
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 750a38ea1..b6cf5d56b 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -110,6 +110,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#define VM_ATTACH (1 << 11)
#define VM_DELETE (1 << 12)
#define VM_ALLOCED (1 << 13)
+#define VM_SEARCH (1 << 14)
#define ERROR_LOCK_PATH -100
@@ -534,12 +535,11 @@ static struct ast_vm_user *find_user_realtime(struct ast_vm_user *ivm, const cha
ast_set_flag(retval, VM_ALLOCED);
if (mailbox)
ast_copy_string(retval->mailbox, mailbox, sizeof(retval->mailbox));
- if (context)
- ast_copy_string(retval->context, context, sizeof(retval->context));
- else
- strcpy(retval->context, "default");
populate_defaults(retval);
- var = ast_load_realtime("voicemail", "mailbox", mailbox, "context", retval->context, NULL);
+ if (ast_test_flag((&globalflags), VM_SEARCH))
+ var = ast_load_realtime("voicemail", "mailbox", mailbox, NULL);
+ else
+ var = ast_load_realtime("voicemail", "mailbox", mailbox, "context", retval->context, NULL);
if (var) {
tmp = var;
while(tmp) {
@@ -554,6 +554,8 @@ static struct ast_vm_user *find_user_realtime(struct ast_vm_user *ivm, const cha
ast_copy_string(retval->email, tmp->value, sizeof(retval->email));
} else if (!strcasecmp(tmp->name, "fullname")) {
ast_copy_string(retval->fullname, tmp->value, sizeof(retval->fullname));
+ } else if (!strcasecmp(tmp->name, "context")) {
+ ast_copy_string(retval->context, tmp->value, sizeof(retval->context));
} else
apply_option(retval, tmp->name, tmp->value);
tmp = tmp->next;
@@ -574,13 +576,14 @@ static struct ast_vm_user *find_user(struct ast_vm_user *ivm, const char *contex
ast_mutex_lock(&vmlock);
cur = users;
- if (!context)
+ if (!context && !ast_test_flag((&globalflags), VM_SEARCH))
context = "default";
while (cur) {
- if ((!strcasecmp(context, cur->context)) &&
- (!strcasecmp(mailbox, cur->mailbox)))
- break;
+ if (ast_test_flag((&globalflags), VM_SEARCH) && !strcasecmp(mailbox, cur->mailbox))
+ break;
+ if ((!strcasecmp(context, cur->context)) && (!strcasecmp(mailbox, cur->mailbox)))
+ break;
cur=cur->next;
}
if (cur) {
@@ -5810,6 +5813,7 @@ static int load_config(void)
struct ast_variable *var;
char *notifystr = NULL;
char *astattach;
+ char *astsearch;
char *astsaycid;
char *send_voicemail;
char *astcallop;
@@ -5863,6 +5867,10 @@ static int load_config(void)
astattach = "yes";
ast_set2_flag((&globalflags), ast_true(astattach), VM_ATTACH);
+ if (!(astsearch = ast_variable_retrieve(cfg, "general", "searchcontexts")))
+ astsearch = "no";
+ ast_set2_flag((&globalflags), ast_true(astsearch), VM_SEARCH);
+
#ifdef USE_ODBC_STORAGE
strcpy(odbc_database, "asterisk");
if ((thresholdstr = ast_variable_retrieve(cfg, "general", "odbcstorage"))) {
diff --git a/configs/voicemail.conf.sample b/configs/voicemail.conf.sample
index ba917abca..8558235a6 100644
--- a/configs/voicemail.conf.sample
+++ b/configs/voicemail.conf.sample
@@ -160,6 +160,9 @@ emaildateformat=%A, %B %d, %Y at %r
sendvoicemail=yes ; Context to Send voicemail from [option 5 from the advanced menu]
; if not listed, sending messages from inside voicemail will not be
; permitted
+; searchcontexts=yes ; Current default behavior is to search only the default context
+ ; if one is not specified. The older behavior was to search all contexts.
+ ; This option restores the old behavior [DEFAULT=no]
; callback=fromvm ; Context to call back from
; if not listed, calling the sender back will not be permitted
; review=yes ; Allow sender to review/rerecord their message before saving it [OFF by default