Index: channels/chan_vpb.c =================================================================== RCS file: /usr/cvsroot/asterisk/channels/chan_vpb.c,v retrieving revision 1.12 diff -u -r1.12 chan_vpb.c --- channels/chan_vpb.c 9 Dec 2003 23:55:17 -0000 1.12 +++ channels/chan_vpb.c 30 Jan 2004 17:27:28 -0000 @@ -681,13 +681,26 @@ { struct vpb_pvt *p = (struct vpb_pvt *)ast->pvt->pvt; int res = 0; - char *s = strrchr(dest, '/'); + char *s = strrchr(dest, '/'), char *t; if (s) s = s + 1; else s = dest; + /* We cannot use either the & or the , in a Dial string, as these + * characters are used to signal 1) different concurrent technologies, + * or 2) separation of application arguments. Therefore, this channel + * driver should translate the w (for a pause) to the , and the f (for + * a flash-hook) to a &. */ + + for (t = s; t != '\0' ; t++) { + if ((*t == 'w') || (*t == 'W')) + *t = ','; + else if ((*t == 'f') || (*t == 'F')) + *t = '&'; + } + if (ast->_state != AST_STATE_DOWN && ast->_state != AST_STATE_RESERVED) { ast_log(LOG_WARNING, "vpb_call on %s neither down nor reserved!\n", ast->name);