]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Submitting a fix for voicemail with IMAP storage. Attachments with format specified...
authorMark Michelson <mmichelson@digium.com>
Fri, 1 Jun 2007 21:09:30 +0000 (21:09 +0000)
committerMark Michelson <mmichelson@digium.com>
Fri, 1 Jun 2007 21:09:30 +0000 (21:09 +0000)
Thank you very much to xmarksthespot for submitting the patch that fixed this. (Issues 9787 and 8873, Reported by xmarksthespot and jerjer, patched by xmarksthespot)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@66897 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c

index 476e1a3e419571c30c798daa81ebff7998babf0a..3f74c724e609875079ade24364859958b62e36d7 100644 (file)
@@ -565,6 +565,7 @@ static void populate_defaults(struct ast_vm_user *vmu)
 
 static void apply_option(struct ast_vm_user *vmu, const char *var, const char *value)
 {
+    ast_log (LOG_DEBUG, "I'm applying option %s with value %s\n", var, value);
        int x;
        if (!strcasecmp(var, "attach")) {
                ast_set2_flag(vmu, ast_true(value), VM_ATTACH);
@@ -579,6 +580,7 @@ static void apply_option(struct ast_vm_user *vmu, const char *var, const char *v
 #ifdef IMAP_STORAGE
        } else if (!strcasecmp(var, "imapuser")) {
                ast_copy_string(vmu->imapuser, value, sizeof(vmu->imapuser));
+        ast_log (LOG_DEBUG, "vmu->imapuser = %s\n", vmu->imapuser);
        } else if (!strcasecmp(var, "imappassword")) {
                ast_copy_string(vmu->imappassword, value, sizeof(vmu->imappassword));
 #endif
@@ -664,6 +666,7 @@ static void apply_options_full(struct ast_vm_user *retval, struct ast_variable *
 {
        struct ast_variable *tmp;
        tmp = var;
+    ast_log (LOG_DEBUG, "I'm applying the value %s somewhere...\n", tmp->name);
        while (tmp) {
                if (!strcasecmp(tmp->name, "vmsecret")) {
                        ast_copy_string(retval->password, tmp->value, sizeof(retval->password));
@@ -682,6 +685,7 @@ static void apply_options_full(struct ast_vm_user *retval, struct ast_variable *
                        ast_copy_string(retval->context, tmp->value, sizeof(retval->context));
 #ifdef IMAP_STORAGE
                } else if (!strcasecmp(tmp->name, "imapuser")) {
+            ast_log (LOG_DEBUG, "I'm setting the imapuser field to %s\n", tmp->name);
                        ast_copy_string(retval->imapuser, tmp->value, sizeof(retval->imapuser));
                } else if (!strcasecmp(tmp->name, "imappassword")) {
                        ast_copy_string(retval->imappassword, tmp->value, sizeof(retval->imappassword));
@@ -1985,16 +1989,6 @@ static void make_email_file(FILE *p, char *srcemail, struct ast_vm_user *vmu, in
                fprintf(p, "Content-Disposition: attachment; filename=\"msg%04d.%s\"" ENDL ENDL, msgnum + 1, format);
                snprintf(fname, sizeof(fname), "%s.%s", attach, format);
                base_encode(fname, p);
-               /* only attach if necessary */
-               if (imap && !strcmp(format, "gsm")) {
-                       fprintf(p, "--%s" ENDL, bound);
-                       fprintf(p, "Content-Type: audio/x-gsm; name=\"msg%04d.%s\"" ENDL, msgnum + 1, format);
-                       fprintf(p, "Content-Transfer-Encoding: base64" ENDL);
-                       fprintf(p, "Content-Description: Voicemail sound attachment." ENDL);
-                       fprintf(p, "Content-Disposition: attachment; filename=\"msg%04d.gsm\"" ENDL ENDL, msgnum + 1);
-                       snprintf(fname, sizeof(fname), "%s.gsm", attach);
-                       base_encode(fname, p);
-               }
                fprintf(p, ENDL ENDL "--%s--" ENDL "." ENDL, bound);
                if (tmpfd > -1)
                        close(tmpfd);
@@ -2490,7 +2484,7 @@ static int inboxcount(const char *mailbox, int *newmsgs, int *oldmsgs)
        }
 
        /* We have to get the user before we can open the stream! */
-       /*ast_log (LOG_DEBUG,"Before find_user, context is %s and mailbox is %s\n",context,mailbox); */
+       /* ast_log (LOG_DEBUG,"Before find_user, context is %s and mailbox is %s\n",context,mailbox); */
        vmu = find_user(NULL, context, mailboxnc);
        if (!vmu) {
                ast_log (LOG_ERROR,"Couldn't find mailbox %s in context %s\n",mailboxnc,context);
@@ -3004,7 +2998,7 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, struct leave_vm_
                        newmsgs = vms->newmessages++;
                        oldmsgs = vms->oldmessages;
                } else {
-                       res = inboxcount(ext, &newmsgs, &oldmsgs);
+                       res = inboxcount(ext_context, &newmsgs, &oldmsgs);
                        if(res < 0) {
                                ast_log(LOG_NOTICE,"Can not leave voicemail, unable to count messages\n");
                                return -1;