Index: mysql-vm-routines.h =================================================================== RCS file: /usr/cvsroot/asterisk-addons/mysql-vm-routines.h,v retrieving revision 1.5 diff -u -r1.5 mysql-vm-routines.h --- mysql-vm-routines.h 15 May 2004 23:18:11 -0000 1.5 +++ mysql-vm-routines.h 1 Jun 2004 17:03:00 -0000 @@ -43,13 +43,7 @@ retval=malloc(sizeof(struct ast_vm_user)); if (retval) { - *retval->mailbox='\0'; - *retval->context='\0'; - *retval->password='\0'; - *retval->fullname='\0'; - *retval->email='\0'; - *retval->pager='\0'; - *retval->serveremail='\0'; + memset(retval, 0, sizeof(struct ast_vm_user)); retval->attach=-1; retval->alloced=1; retval->next=NULL; @@ -58,12 +52,17 @@ } if (context) { strcpy(retval->context, context); - } + } else { + strcpy(retval->context, "default"); + strcpy(context, "default"); + } + /* We should at this point have the context and retval->context else we free retval and return NULL */ if (*retval->context) { sprintf(query, "SELECT password,fullname,email,pager,options FROM users WHERE context='%s' AND mailbox='%s'", context, mailbox); } else { - sprintf(query, "SELECT password,fullname,email,pager,options FROM users WHERE context='default' AND mailbox='%s'", mailbox); + free(retval); + return(NULL); } ast_mutex_lock(&mysqllock); mysql_query(dbhandler, query); @@ -109,7 +108,9 @@ if (*vmu->context) { sprintf(query, "UPDATE users SET password='%s' WHERE context='%s' AND mailbox='%s' AND password='%s'", password, vmu->context, vmu->mailbox, vmu->password); } else { - sprintf(query, "UPDATE users SET password='%s' WHERE mailbox='%s' AND password='%s'", password, vmu->mailbox, vmu->password); + /* Lets be specific here since we can have for example exten 123 in diffrent contexts. + This has the ability to update/change passwords for all users with mailbox 123. */ + sprintf(query, "UPDATE users SET password='%s' WHERE mailbox='%s' AND password='%s' AND context='default'", password, vmu->mailbox, vmu->password); } ast_mutex_lock(&mysqllock); mysql_query(dbhandler, query); @@ -124,7 +125,9 @@ if (context) { sprintf(query, "UPDATE users SET password='%s' WHERE context='%s' AND mailbox='%s'", password, context, mailbox); } else { - sprintf(query, "UPDATE users SET password='%s' WHERE mailbox='%s'", password, mailbox); + /* Lets be specific here since we can have for example exten 123 in diffrent contexts. + This has the ability to reset passwords for all users with mailbox 123. */ + sprintf(query, "UPDATE users SET password='%s' WHERE mailbox='%s' AND context='default'", password, mailbox); } ast_mutex_lock(&mysqllock); mysql_query(dbhandler, query);