? asterisk/test.patch Index: asterisk/channel.c =================================================================== RCS file: /usr/cvsroot/asterisk/channel.c,v retrieving revision 1.155 diff -u -r1.155 channel.c --- asterisk/channel.c 31 Dec 2004 00:04:41 -0000 1.155 +++ asterisk/channel.c 31 Dec 2004 07:57:24 -0000 @@ -2591,7 +2591,7 @@ long elapsed_ms=0, time_left_ms=0; int playit=0, playitagain=1, first_time=1; - flags = (config->allowdisconnect_out||config->allowredirect_out ? AST_BRIDGE_DTMF_CHANNEL_0 : 0) + (config->allowdisconnect_in||config->allowredirect_in ? AST_BRIDGE_DTMF_CHANNEL_1 : 0); + flags = (config->allowdisconnect_out||config->allowredirect_out||config->bridgedtmf_out ? AST_BRIDGE_DTMF_CHANNEL_0 : 0) + (config->allowdisconnect_in||config->allowredirect_in||config->bridgedtmf_in ? AST_BRIDGE_DTMF_CHANNEL_1 : 0); *fo = NULL; firstpass = config->firstpass; Index: asterisk/apps/app_dial.c =================================================================== RCS file: /usr/cvsroot/asterisk/apps/app_dial.c,v retrieving revision 1.116 diff -u -r1.116 app_dial.c --- asterisk/apps/app_dial.c 30 Dec 2004 01:17:07 -0000 1.116 +++ asterisk/apps/app_dial.c 31 Dec 2004 07:57:25 -0000 @@ -60,6 +60,8 @@ " This application returns -1 if the originating channel hangs up, or if the\n" "call is bridged and either of the parties in the bridge terminate the call.\n" "The option string may contain zero or more of the following characters:\n" +" 'b' -- make in channel dtmf processed\n" +" 'B' -- make out channel dtmf processed\n" " 't' -- allow the called user transfer the calling user by hitting #.\n" " 'T' -- allow the calling user to transfer the call by hitting #.\n" " 'f' -- Forces callerid to be set as the extension of the line \n" @@ -121,6 +123,8 @@ int ringbackonly; int musiconhold; int allowdisconnect_in; + int bridgedtmf_in; + int bridgedtmf_out; int allowdisconnect_out; int forcecallerid; int forwards; @@ -789,6 +793,12 @@ } memset(tmp, 0, sizeof(struct localuser)); if (transfer) { + if (strchr(transfer, 'b')) + tmp->bridgedtmf_in = 1; + else tmp->bridgedtmf_in = 0; + if (strchr(transfer, 'B')) + tmp->bridgedtmf_out = 1; + else tmp->bridgedtmf_out = 0; if (strchr(transfer, 't')) tmp->allowredirect_in = 1; else tmp->allowredirect_in = 0; @@ -1141,6 +1151,8 @@ config.allowredirect_out = allowredir_out; config.allowdisconnect_in = allowdisconnect_in; config.allowdisconnect_out = allowdisconnect_out; + config.bridgedtmf_in = tmp->bridgedtmf_in; + config.bridgedtmf_out = tmp->bridgedtmf_out; config.timelimit = timelimit; config.play_warning = play_warning; config.warning_freq = warning_freq; Index: asterisk/include/asterisk/channel.h =================================================================== RCS file: /usr/cvsroot/asterisk/include/asterisk/channel.h,v retrieving revision 1.65 diff -u -r1.65 channel.h --- asterisk/include/asterisk/channel.h 24 Dec 2004 01:40:07 -0000 1.65 +++ asterisk/include/asterisk/channel.h 31 Dec 2004 07:57:26 -0000 @@ -240,6 +240,8 @@ int allowredirect_out; int allowdisconnect_in; int allowdisconnect_out; + int bridgedtmf_in; + int bridgedtmf_out; long timelimit; long play_warning; long warning_freq;