Index: apps/app_voicemail.c =================================================================== RCS file: /usr/cvsroot/asterisk/apps/app_voicemail.c,v retrieving revision 1.48 diff -u -r1.48 app_voicemail.c --- apps/app_voicemail.c 22 Dec 2003 18:30:24 -0000 1.48 +++ apps/app_voicemail.c 2 Jan 2004 04:44:12 -0000 @@ -97,6 +97,8 @@ char pager[80]; char serveremail[80]; char zonetag[80]; + char adsifdn[5]; + char adsisec[5]; int attach; int alloced; struct ast_vm_user *next; @@ -213,6 +215,10 @@ strncpy(vmu->serveremail, value, sizeof(vmu->serveremail) - 1); } else if (!strcasecmp(var, "tz")) { strncpy(vmu->zonetag, value, sizeof(vmu->zonetag) - 1); + } else if (!strcasecmp(var, "adsifdn")) { + strncpy(vmu->adsifdn, value, sizeof(vmu->adsifdn) - 1); + } else if (!strcasecmp(var, "adsisec")) { + strncpy(vmu->adsisec, value, sizeof(vmu->adsisec) - 1); } } } @@ -1606,12 +1612,13 @@ return bytes; } -static int adsi_load_vmail(struct ast_channel *chan, int *useadsi) +static int adsi_load_vmail(struct ast_channel *chan, struct ast_vm_user *vmu, int *useadsi) { char buf[256]; int bytes=0; int x; char num[5]; + char *adsifdn = adapp, *adsisec = adsec; *useadsi = 0; bytes += adsi_data_mode(buf + bytes); @@ -1627,7 +1634,12 @@ bytes += adsi_data_mode(buf + bytes); adsi_transmit_message(chan, buf, bytes, ADSI_MSG_DISPLAY); - if (adsi_begin_download(chan, addesc, adapp, adsec, adver)) { + if (vmu->adsifdn) + adsifdn = vmu->adsifdn; + if (vmu->adsisec) + adsisec = vmu->adsisec; + + if (adsi_begin_download(chan, addesc, adsifdn, adsisec, adver)) { bytes = 0; bytes += adsi_display(buf + bytes, ADSI_COMM_PAGE, 3, ADSI_JUST_CENT, 0, "Load Cancelled.", ""); bytes += adsi_display(buf + bytes, ADSI_COMM_PAGE, 4, ADSI_JUST_CENT, 0, "ADSI Unavailable", ""); @@ -1725,7 +1737,7 @@ bytes = 0; /* Load the session now */ - if (adsi_load_session(chan, adapp, adver, 1) == 1) { + if (adsi_load_session(chan, adsifdn, adver, 1) == 1) { *useadsi = 1; bytes += adsi_display(buf + bytes, ADSI_COMM_PAGE, 3, ADSI_JUST_CENT, 0, "Scripts Loaded!", ""); } else @@ -1735,16 +1747,21 @@ return 0; } -static void adsi_begin(struct ast_channel *chan, int *useadsi) +static void adsi_begin(struct ast_channel *chan, struct ast_vm_user *vmu, int *useadsi) { int x; + char *adsifdn = adapp; + + if (vmu->adsifdn) + adsifdn = vmu->adsifdn; + if (!adsi_available(chan)) return; - x = adsi_load_session(chan, adapp, adver, 1); + x = adsi_load_session(chan, adsifdn, adver, 1); if (x < 0) return; if (!x) { - if (adsi_load_vmail(chan, useadsi)) { + if (adsi_load_vmail(chan, vmu, useadsi)) { ast_log(LOG_WARNING, "Unable to upload voicemail scripts\n"); return; } @@ -2692,7 +2709,7 @@ } /* If ADSI is supported, setup login screen */ - adsi_begin(chan, &useadsi); + adsi_begin(chan, vmu, &useadsi); if (!skipuser && useadsi) adsi_login(chan); if (!skipuser && ast_streamfile(chan, "vm-login", chan->language)) {