All pastes #332259 Raw Edit

Miscellany

public text v1 · immutable
#332259 ·published 2007-01-29 21:19 UTC
rendered paste body
Index: main/rtp.c
===================================================================
--- main/rtp.c  (revision 52643)
+++ main/rtp.c  (working copy)
@@ -3187,11 +3187,19 @@
         * |-----------|------------|-----------------------|
         * | Inband    | False      | True                  |
         * | RFC2833   | True       | True                  |
-        * | SIP Info  | False      | False                 |
+        * | SIP INFO  | False      | False                 |
         * --------------------------------------------------
+        * However, if DTMF from both channels is being monitored by the core, then
+        * we can still do packet-to-packet bridging, because passing through the
+        * core will handle DTMF mode translation.
         */
        if ( (ast_test_flag(p0, FLAG_HAS_DTMF) != ast_test_flag(p1, FLAG_HAS_DTMF)) ||
                 (!c0->tech->send_digit_begin != !c1->tech->send_digit_begin)) {
+               if (!ast_test_flag(p0, FLAG_P2P_NEED_DTMF) || !ast_test_flag(p1, FLAG_P2P_NEED_DTMF)) {
+                       ast_channel_unlock(c0);
+                       ast_channel_unlock(c1);
+                       return AST_BRIDGE_FAILED_NOWARN;
+               }
                audio_p0_res = AST_RTP_TRY_PARTIAL;
                audio_p1_res = AST_RTP_TRY_PARTIAL;
        }