Asterisk normally handles RFC2883 in a strange manner:
From the phone:
Audio Audio Audio DigitStart Duration Duration DigitEnd Audio Audio
It waits until it sees 'DigitEnd' before it does anything, then it sends (in a tight for loop):
DigitStart Start Start End End End (takes about 1ms normally)
So, this consumes the DTMF entirely (duration is lost), and it sends it in such a short period that devices that use the other definition of how long to make DTMF (you can either use Duration field, the Asterisk way, or the start playing with the start message, stop at the end way, which our switch does) end up generating the worlds shortest DTMF sequences.
Thus, the side effect of this patch, by slowing the packet rate down to around 80ms for the entire period, is it won't accept further DTMF/audio for those 80ms (Asterisk, that is, it will delay everything by that amount). So, really fast DTMF dialers can miss a keystroke.
For SIP peers running Asterisk 1.0.x - 1.2.x, a patch can be provided here