[asterisk-commits] qwell: trunk r51168 - in /trunk: ./ apps/
	contrib/scripts/
    asterisk-commits at lists.digium.com 
    asterisk-commits at lists.digium.com
       
    Tue Jan 16 15:53:14 MST 2007
    
    
  
Author: qwell
Date: Tue Jan 16 16:53:13 2007
New Revision: 51168
URL: http://svn.digium.com/view/asterisk?view=rev&rev=51168
Log:
Merged revisions 51167 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r51167 | qwell | 2007-01-16 16:50:19 -0600 (Tue, 16 Jan 2007) | 6 lines
Fix an issue with IMAP storage and realtime voicemail.
Also update the vmdb sql script for IMAP specific options.
Issue 8819, initial patches by bsmithurst (slightly modified by me)
........
Modified:
    trunk/   (props changed)
    trunk/apps/app_voicemail.c
    trunk/contrib/scripts/vmdb.sql
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Modified: trunk/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_voicemail.c?view=diff&rev=51168&r1=51167&r2=51168
==============================================================================
--- trunk/apps/app_voicemail.c (original)
+++ trunk/apps/app_voicemail.c Tue Jan 16 16:53:13 2007
@@ -694,6 +694,12 @@
 			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));
+#ifdef IMAP_STORAGE
+		} else if (!strcasecmp(tmp->name, "imapuser")) {
+			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));
+#endif
 		} else
 			apply_option(retval, tmp->name, tmp->value);
 		tmp = tmp->next;
@@ -8407,6 +8413,28 @@
 }
 #endif
 
+static struct ast_vm_user *find_user_realtime_imapuser(const char *imapuser)
+{
+	struct ast_variable *var;
+	struct ast_vm_user *vmu;
+
+	vmu = ast_calloc(1, sizeof *vmu);
+	if (!vmu)
+		return NULL;
+	ast_set_flag(vmu, VM_ALLOCED);
+	populate_defaults(vmu);
+
+	var = ast_load_realtime("voicemail", "imapuser", imapuser, NULL);
+	if (var) {
+		apply_options_full(vmu, var);
+		ast_variables_destroy(var);
+		return vmu;
+	} else {
+		free(vmu);
+		return NULL;
+	}
+}
+
 /* Interfaces to C-client */
 
 void mm_exists(MAILSTREAM * stream, unsigned long number)
@@ -8540,6 +8568,12 @@
 			if(!strcasecmp(mb->user, vmu->imapuser)) {
 				ast_copy_string(pwd, vmu->imappassword, MAILTMPLEN);
 				break;
+			}
+		}
+		if (!vmu) {
+			if ((vmu = find_user_realtime_imapuser(mb->user))) {
+				ast_copy_string(pwd, vmu->imappassword, MAILTMPLEN);
+				free_user(vmu);
 			}
 		}
 	}
Modified: trunk/contrib/scripts/vmdb.sql
URL: http://svn.digium.com/view/asterisk/trunk/contrib/scripts/vmdb.sql?view=diff&rev=51168&r1=51167&r2=51168
==============================================================================
--- trunk/contrib/scripts/vmdb.sql (original)
+++ trunk/contrib/scripts/vmdb.sql Tue Jan 16 16:53:13 2007
@@ -7,5 +7,7 @@
 email VARCHAR(80) NOT NULL DEFAULT '',
 pager VARCHAR(80) NOT NULL DEFAULT '',
 options VARCHAR(160) NOT NULL DEFAULT '',
+imapuser VARCHAR(80) DEFAULT NULL,
+imappassword VARCHAR(80) DEFAULT NULL,
 PRIMARY KEY (context, mailbox)
 );
    
    
More information about the asterisk-commits
mailing list