diff options
author | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-03-31 19:34:47 +0000 |
---|---|---|
committer | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-03-31 19:34:47 +0000 |
commit | 763bf1ce2eac1d4e971cff334ae9869b6b2fbd44 (patch) | |
tree | 7f21f78b6b9176d2cede329152246e99243132fb /apps | |
parent | f6797cb4bded2e9c81d97203e75a98402a7dc904 (diff) |
Recorded merge of revisions 255592 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
................
r255592 | tilghman | 2010-03-31 14:13:02 -0500 (Wed, 31 Mar 2010) | 22 lines
Recorded merge of revisions 255591 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r255591 | tilghman | 2010-03-31 14:09:46 -0500 (Wed, 31 Mar 2010) | 15 lines
Ensure line terminators in email are consistent.
Fixes an issue with certain Mail Transport Agents, where attachments are not
interpreted correctly.
(closes issue #16557)
Reported by: jcovert
Patches:
20100308__issue16557__1.4.diff.txt uploaded by tilghman (license 14)
20100308__issue16557__1.6.0.diff.txt uploaded by tilghman (license 14)
20100308__issue16557__trunk.diff.txt uploaded by tilghman (license 14)
Tested by: ebroad, zktech
Reviewboard: https://reviewboard.asterisk.org/r/544/
........
................
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@255676 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps')
-rw-r--r-- | apps/app_voicemail.c | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index c035aa9d1..16996c3f3 100644 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -405,7 +405,11 @@ static AST_LIST_HEAD_STATIC(vmstates, vmstate); #define BASELINELEN 72 #define BASEMAXINLINE 256 -#define eol "\r\n" +#ifdef IMAP_STORAGE +#define ENDL "\r\n" +#else +#define ENDL "\n" +#endif #define MAX_DATETIME_FORMAT 512 #define MAX_NUM_CID_CONTEXTS 10 @@ -3892,14 +3896,16 @@ static int inchar(struct baseio *bio, FILE *fi) static int ochar(struct baseio *bio, int c, FILE *so) { if (bio->linelength >= BASELINELEN) { - if (fputs(eol,so) == EOF) + if (fputs(ENDL, so) == EOF) { return -1; + } bio->linelength= 0; } - if (putc(((unsigned char)c),so) == EOF) + if (putc(((unsigned char) c), so) == EOF) { return -1; + } bio->linelength++; @@ -3967,9 +3973,10 @@ static int base_encode(char *filename, FILE *so) } fclose(fi); - - if (fputs(eol,so)==EOF) + + if (fputs(ENDL, so) == EOF) { return 0; + } return 1; } @@ -4174,11 +4181,6 @@ static void make_email_file(FILE *p, char *srcemail, struct ast_vm_user *vmu, in char *greeting_attachment; char filename[256]; -#ifdef IMAP_STORAGE -#define ENDL "\r\n" -#else -#define ENDL "\n" -#endif /* One alloca for multiple fields */ len_passdata2 = strlen(vmu->fullname); @@ -4359,7 +4361,22 @@ static void make_email_file(FILE *p, char *srcemail, struct ast_vm_user *vmu, in memset(passdata, 0, vmlen); prep_email_sub_vars(ast, vmu, msgnum + 1, context, mailbox, fromfolder, cidnum, cidname, dur, date, passdata, vmlen, category, flag); pbx_substitute_variables_helper(ast, e_body, passdata, vmlen); +#ifdef IMAP_STORAGE + { + /* Convert body to native line terminators for IMAP backend */ + char *line = passdata, *next; + do { + /* Terminate line before outputting it to the file */ + if ((next = strchr(line, '\n'))) { + *next++ = '\0'; + } + fprintf(p, "%s" ENDL, line); + line = next; + } while (!ast_strlen_zero(line)); + } +#else fprintf(p, "%s" ENDL, passdata); +#endif ast_channel_free(ast); } else ast_log(AST_LOG_WARNING, "Cannot allocate the channel for variables substitution\n"); @@ -11313,7 +11330,7 @@ static int load_module(void) /* compute the location of the voicemail spool directory */ snprintf(VM_SPOOL_DIR, sizeof(VM_SPOOL_DIR), "%s/voicemail/", ast_config_AST_SPOOL_DIR); - + if (!(mwi_subscription_tps = ast_taskprocessor_get("app_voicemail", 0))) { ast_log(AST_LOG_WARNING, "failed to reference mwi subscription taskprocessor. MWI will not work\n"); } |