summaryrefslogtreecommitdiff
path: root/apps/app_voicemail.c
diff options
context:
space:
mode:
authorJeremy McNamara <jj@nufone.net>2004-04-29 13:34:54 +0000
committerJeremy McNamara <jj@nufone.net>2004-04-29 13:34:54 +0000
commit709e526ad9d59d3c162e65f75dcf765df70db458 (patch)
treec39edc28d75babc11a78f03c6286d69fe16384b2 /apps/app_voicemail.c
parentcd788e2ab9f3d7d23d11b410793f95a2fbc6d0f8 (diff)
populate global options correctly. Bug#1515
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2818 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps/app_voicemail.c')
-rwxr-xr-xapps/app_voicemail.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 3d7a9780f..620af30a9 100755
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -242,12 +242,9 @@ STANDARD_LOCAL_USER;
LOCAL_USER_DECL;
-static void apply_options(struct ast_vm_user *vmu, char *options)
+static void populate_defaults(struct ast_vm_user *vmu)
{
- /* Destructively Parse options and apply */
- char *stringp = ast_strdupa(options);
- char *s;
- char *var, *value;
+ vmu->attach = -1;
if (reviewvm)
vmu->review = 1;
if (calloper)
@@ -258,6 +255,15 @@ static void apply_options(struct ast_vm_user *vmu, char *options)
strncpy(vmu->callback, callcontext, sizeof(vmu->callback) -1);
if (dialcontext)
strncpy(vmu->dialout, dialcontext, sizeof(vmu->dialout) -1);
+}
+
+static void apply_options(struct ast_vm_user *vmu, char *options)
+{
+ /* Destructively Parse options and apply */
+ char *stringp = ast_strdupa(options);
+ char *s;
+ char *var, *value;
+
while((s = strsep(&stringp, "|"))) {
value = s;
if ((var = strsep(&value, "=")) && value) {
@@ -344,16 +350,8 @@ static struct ast_vm_user *find_user(struct ast_vm_user *ivm, char *context, cha
/* fprintf(stderr,"postgres find_user:\n"); */
if (retval) {
- *retval->mailbox='\0';
- *retval->context='\0';
- strcpy(retval->password, "NULL");
- *retval->fullname='\0';
- *retval->email='\0';
- *retval->pager='\0';
- *retval->serveremail='\0';
- retval->attach=-1;
+ memset(retval, 0, sizeof(struct ast_vm_user));
retval->alloced=1;
- retval->next=NULL;
if (mailbox) {
strcpy(retval->mailbox, mailbox);
}
@@ -364,6 +362,7 @@ static struct ast_vm_user *find_user(struct ast_vm_user *ivm, char *context, cha
{
strcpy(retval->context, "default");
}
+ populate_defaults(retval);
sprintf(query, "SELECT password,fullname,email,pager,options FROM voicemail WHERE context='%s' AND mailbox='%s'", retval->context, mailbox);
/* fprintf(stderr,"postgres find_user: query = %s\n",query); */
@@ -3338,7 +3337,7 @@ static int append_mailbox(char *context, char *mbox, char *data)
memset(vmu, 0, sizeof(struct ast_vm_user));
strncpy(vmu->context, context, sizeof(vmu->context) - 1);
strncpy(vmu->mailbox, mbox, sizeof(vmu->mailbox) - 1);
- vmu->attach = -1;
+ populate_defaults(vmu);
stringp = tmp;
if ((s = strsep(&stringp, ",")))
strncpy(vmu->password, s, sizeof(vmu->password) - 1);