If '#' is sent for username, use callerid if available (bug #2301)
authorMark Spencer <markster@digium.com>
Thu, 2 Sep 2004 19:18:35 +0000 (19:18 +0000)
committerMark Spencer <markster@digium.com>
Thu, 2 Sep 2004 19:18:35 +0000 (19:18 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3713 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c

index a811041..dd227f1 100755 (executable)
@@ -3517,6 +3517,7 @@ static int vm_execmain(struct ast_channel *chan, void *data)
        struct ast_vm_user *vmu = NULL, vmus;
        char *context=NULL;
        int silentexit = 0;
+       char cid[256]="";
 
        LOCAL_USER_ADD(u);
        memset(&vms, 0, sizeof(vms));
@@ -3576,10 +3577,21 @@ static int vm_execmain(struct ast_channel *chan, void *data)
                        goto out;
                }
                if (ast_strlen_zero(vms.username)) {
-                       if (option_verbose > 2)
-                               ast_verbose(VERBOSE_PREFIX_3 "Username not entered\n");
-                       res = 0;
-                       goto out;
+                               char *callerid=NULL, *name=NULL;
+                               if(chan->callerid != NULL) {
+                                       strncpy(cid, chan->callerid, sizeof(cid) - 1);
+                                       ast_callerid_parse(cid, &name, &callerid);
+                               }
+                               if(callerid != NULL) {                  
+                                       if (option_verbose > 2)
+                                       ast_verbose(VERBOSE_PREFIX_3 "No username but # key pressed. Using CID '%s'\n",callerid);
+                                       strncpy(vms.username, callerid, sizeof(vms.username) - 1);
+                               } else {
+                                       if (option_verbose > 2)
+                                       ast_verbose(VERBOSE_PREFIX_3 "Username not entered\n"); 
+                                       res = 0;
+                                       goto out;
+                               }
                }
                if (useadsi)
                        adsi_password(chan);