diff options
author | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-01-18 00:48:55 +0000 |
---|---|---|
committer | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-01-18 00:48:55 +0000 |
commit | 3dd9cfc45091433d65daa6e63aa4764669ea5fdd (patch) | |
tree | 6734e97e2711b8cd086868fb6995b1cbffd6dbdd /apps/app_voicemail.c | |
parent | 0625bd9ccb57359282adcd218c5984e0c0ea936f (diff) |
Build the IMAP remote directory string better and properly. Fix an issue with encoding the GSM voicemail when attaching to the voicemail. (issue #8808 reported by akohlsmith)
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@51213 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps/app_voicemail.c')
-rw-r--r-- | apps/app_voicemail.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 1fb7dd07c..89b73ffb1 100644 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -1971,7 +1971,7 @@ static void make_email_file(FILE *p, char *srcemail, struct ast_vm_user *vmu, in snprintf(fname, sizeof(fname), "%s.%s", attach, format); base_encode(fname, p); /* only attach if necessary */ - if (imap && strcmp(format, "gsm")) { + if (imap && !strcmp(format, "gsm")) { fprintf(p, "--%s\r\n", bound); fprintf(p, "Content-Type: audio/x-gsm; name=\"msg%04d.%s\"\r\n", msgnum, format); fprintf(p, "Content-Transfer-Encoding: base64\r\n"); @@ -4569,8 +4569,9 @@ static int play_message(struct ast_channel *chan, struct ast_vm_user *vmu, struc #ifdef IMAP_STORAGE static void imap_mailbox_name(char *spec, struct vm_state *vms, int box, int use_folder) { - char tmp[256]; - + char tmp[256], *t = tmp; + size_t left = sizeof(tmp); + if (box == 1) { ast_copy_string(vms->curbox, mbox(0), sizeof(vms->curbox)); sprintf(vms->vmbox, "vm-%s", mbox(1)); @@ -4579,11 +4580,20 @@ static void imap_mailbox_name(char *spec, struct vm_state *vms, int box, int use snprintf(vms->vmbox, sizeof(vms->vmbox), "vm-%s", vms->curbox); } - if (strlen(authuser) > 0) { - snprintf(tmp, sizeof(tmp), "{%s:%s/imap/authuser=%s/%s/user=%s}",imapserver,imapport,authuser,imapflags,vms->imapuser); - } else { - snprintf(tmp, sizeof(tmp), "{%s:%s/imap/%s/user=%s}",imapserver,imapport,imapflags,vms->imapuser); - } + /* Build up server information */ + ast_build_string(&t, &left, "{%s:%s/imap", imapserver, imapport); + + /* Add authentication user if present */ + if (!ast_strlen_zero(authuser)) + ast_build_string(&t, &left, "/%s", authuser); + + /* Add flags if present */ + if (!ast_strlen_zero(imapflags)) + ast_build_string(&t, &left, "/%s", imapflags); + + /* End with username */ + ast_build_string(&t, &left, "/user=%s}", vms->imapuser); + if(box == 0 || box == 1) sprintf(spec, "%s%s", tmp, use_folder? imapfolder: "INBOX"); else |