diff -uNr asterisk-1.8.2.3/main/app.c asterisk-1.8.2.3.edit/main/app.c --- asterisk-1.8.2.3/main/app.c 2010-07-14 11:48:36.000000000 -0400 +++ asterisk-1.8.2.3.edit/main/app.c 2011-02-09 11:52:56.000000000 -0500 @@ -371,18 +371,13 @@ } } else if (strchr("0123456789*#abcdfABCDF", *ptr)) { /* Character represents valid DTMF */ - if (*ptr == 'f' || *ptr == 'F') { - /* ignore return values if not supported by channel */ - ast_indicate(chan, AST_CONTROL_FLASH); - } else { ast_senddigit(chan, *ptr, duration); - } /* pause between digits */ if ((res = ast_safe_sleep(chan, between))) { break; } } else { - ast_log(LOG_WARNING, "Illegal DTMF character '%c' in string. (0-9*#aAbBcCdD allowed)\n", *ptr); + ast_log(LOG_WARNING, "Illegal DTMF character '%c' in string. (0-9*#aAbBcCdDfF allowed)\n", *ptr); } } diff -uNr asterisk-1.8.2.3/res/res_rtp_asterisk.c asterisk-1.8.2.3.edit/res/res_rtp_asterisk.c --- asterisk-1.8.2.3/res/res_rtp_asterisk.c 2010-10-06 00:35:51.000000000 -0400 +++ asterisk-1.8.2.3.edit/res/res_rtp_asterisk.c 2011-02-09 11:57:32.000000000 -0500 @@ -550,6 +550,8 @@ digit = 10; } else if (digit == '#') { digit = 11; + } else if ((digit == 'f') || (digit == 'F')) { + digit = 16; } else if ((digit >= 'A') && (digit <= 'D')) { digit = digit - 'A' + 12; } else if ((digit >= 'a') && (digit <= 'd')) { @@ -664,6 +666,8 @@ digit = 10; } else if (digit == '#') { digit = 11; + } else if ((digit == 'f') || (digit == 'F')) { + digit = 16; } else if ((digit >= 'A') && (digit <= 'D')) { digit = digit - 'A' + 12; } else if ((digit >= 'a') && (digit <= 'd')) {