<p>Robert Cripps has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.asterisk.org/c/testsuite/+/15231">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">testsuite: 488 of T38 reinvite falls back to G711<br><br>Test that a 488 to a T38 reinvite followed by a<br>G711 reinvite results in a G711 call. This is<br>for either leg of the call and the subsequent<br>G711 reinvite is 200 OK'd by astrerisk.<br><br>ASTERISK-29220 #close<br><br>Change-Id: I5d26b17c5c712a800c14264fd72da6e3564dee8a<br>---<br>A tests/t38_enabled_two_reinvite_on_a_leg/configs/ast1/extensions.conf<br>A tests/t38_enabled_two_reinvite_on_a_leg/configs/ast1/pjsip.conf<br>A tests/t38_enabled_two_reinvite_on_a_leg/configs/ast1/sip.conf<br>A tests/t38_enabled_two_reinvite_on_a_leg/run-test<br>A tests/t38_enabled_two_reinvite_on_a_leg/sipp/A_PARTY.xml<br>A tests/t38_enabled_two_reinvite_on_a_leg/sipp/B_PARTY.xml<br>A tests/t38_enabled_two_reinvite_on_a_leg/sipp/CARRIER_G711U.pcap<br>A tests/t38_enabled_two_reinvite_on_a_leg/sipp/CUSTOMER_G711U.pcap<br>A tests/t38_enabled_two_reinvite_on_a_leg/test-config.yaml<br>A tests/t38_enabled_two_reinvite_on_b_leg/configs/ast1/extensions.conf<br>A tests/t38_enabled_two_reinvite_on_b_leg/configs/ast1/pjsip.conf<br>A tests/t38_enabled_two_reinvite_on_b_leg/configs/ast1/sip.conf<br>A tests/t38_enabled_two_reinvite_on_b_leg/run-test<br>A tests/t38_enabled_two_reinvite_on_b_leg/sipp/A_PARTY.xml<br>A tests/t38_enabled_two_reinvite_on_b_leg/sipp/B_PARTY.xml<br>A tests/t38_enabled_two_reinvite_on_b_leg/sipp/CARRIER_G711U.pcap<br>A tests/t38_enabled_two_reinvite_on_b_leg/sipp/CUSTOMER_G711U.pcap<br>A tests/t38_enabled_two_reinvite_on_b_leg/test-config.yaml<br>M tests/tests.yaml<br>19 files changed, 1,175 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/testsuite refs/changes/31/15231/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/tests/t38_enabled_two_reinvite_on_a_leg/configs/ast1/extensions.conf b/tests/t38_enabled_two_reinvite_on_a_leg/configs/ast1/extensions.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..b29ad89</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_a_leg/configs/ast1/extensions.conf</span><br><span>@@ -0,0 +1,5 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[general]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[default]</span><br><span style="color: hsl(120, 100%, 40%);">+exten => 3200000000,1,Dial(PJSIP/sbc)</span><br><span style="color: hsl(120, 100%, 40%);">+exten => 3200000000,2,Hangup()</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_a_leg/configs/ast1/pjsip.conf b/tests/t38_enabled_two_reinvite_on_a_leg/configs/ast1/pjsip.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..7db6e53</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_a_leg/configs/ast1/pjsip.conf</span><br><span>@@ -0,0 +1,53 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[global]</span><br><span style="color: hsl(120, 100%, 40%);">+type = global</span><br><span style="color: hsl(120, 100%, 40%);">+user_agent = Callcontrol</span><br><span style="color: hsl(120, 100%, 40%);">+debug = yes</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[transport-udp6]</span><br><span style="color: hsl(120, 100%, 40%);">+type = transport</span><br><span style="color: hsl(120, 100%, 40%);">+protocol = udp</span><br><span style="color: hsl(120, 100%, 40%);">+bind = [::]:5060</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[transport-udp]</span><br><span style="color: hsl(120, 100%, 40%);">+type = transport</span><br><span style="color: hsl(120, 100%, 40%);">+protocol = udp</span><br><span style="color: hsl(120, 100%, 40%);">+bind = 0.0.0.0:5060</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[PEER_A]</span><br><span style="color: hsl(120, 100%, 40%);">+type = aor</span><br><span style="color: hsl(120, 100%, 40%);">+contact = sip:127.0.0.1:5061</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[PEER_A]</span><br><span style="color: hsl(120, 100%, 40%);">+type = identify</span><br><span style="color: hsl(120, 100%, 40%);">+endpoint = PEER_A</span><br><span style="color: hsl(120, 100%, 40%);">+match = 127.0.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[PEER_A]</span><br><span style="color: hsl(120, 100%, 40%);">+type = endpoint</span><br><span style="color: hsl(120, 100%, 40%);">+context = default</span><br><span style="color: hsl(120, 100%, 40%);">+dtmf_mode = rfc4733</span><br><span style="color: hsl(120, 100%, 40%);">+disallow = all</span><br><span style="color: hsl(120, 100%, 40%);">+allow = ulaw;g729</span><br><span style="color: hsl(120, 100%, 40%);">+direct_media = no</span><br><span style="color: hsl(120, 100%, 40%);">+send_rpid = yes</span><br><span style="color: hsl(120, 100%, 40%);">+sdp_session = session</span><br><span style="color: hsl(120, 100%, 40%);">+aors = PEER_A</span><br><span style="color: hsl(120, 100%, 40%);">+t38_udptl = yes</span><br><span style="color: hsl(120, 100%, 40%);">+t38_udptl_ec = none</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[sbc]</span><br><span style="color: hsl(120, 100%, 40%);">+type = aor</span><br><span style="color: hsl(120, 100%, 40%);">+contact = sip:127.0.0.1:5700</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[sbc]</span><br><span style="color: hsl(120, 100%, 40%);">+type = endpoint</span><br><span style="color: hsl(120, 100%, 40%);">+context = callcontrol</span><br><span style="color: hsl(120, 100%, 40%);">+dtmf_mode = rfc4733</span><br><span style="color: hsl(120, 100%, 40%);">+disallow = all</span><br><span style="color: hsl(120, 100%, 40%);">+allow = ulaw;g729</span><br><span style="color: hsl(120, 100%, 40%);">+direct_media = no</span><br><span style="color: hsl(120, 100%, 40%);">+send_rpid = yes</span><br><span style="color: hsl(120, 100%, 40%);">+sdp_session = session</span><br><span style="color: hsl(120, 100%, 40%);">+aors = sbc</span><br><span style="color: hsl(120, 100%, 40%);">+t38_udptl = yes </span><br><span style="color: hsl(120, 100%, 40%);">+t38_udptl_ec = none</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_a_leg/configs/ast1/sip.conf b/tests/t38_enabled_two_reinvite_on_a_leg/configs/ast1/sip.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..85f3d79</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_a_leg/configs/ast1/sip.conf</span><br><span>@@ -0,0 +1,59 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[general]</span><br><span style="color: hsl(120, 100%, 40%);">+sipdebug=yes</span><br><span style="color: hsl(120, 100%, 40%);">+udpbindaddr=[::]:5060</span><br><span style="color: hsl(120, 100%, 40%);">+tcpenable=no</span><br><span style="color: hsl(120, 100%, 40%);">+tlsenable=no</span><br><span style="color: hsl(120, 100%, 40%);">+transport=udp</span><br><span style="color: hsl(120, 100%, 40%);">+canreinvite=no</span><br><span style="color: hsl(120, 100%, 40%);">+nat=no</span><br><span style="color: hsl(120, 100%, 40%);">+srvlookup=yes</span><br><span style="color: hsl(120, 100%, 40%);">+context=block</span><br><span style="color: hsl(120, 100%, 40%);">+pedantic=yes</span><br><span style="color: hsl(120, 100%, 40%);">+dtmfmode=rfc2833</span><br><span style="color: hsl(120, 100%, 40%);">+realm=voxbone.com</span><br><span style="color: hsl(120, 100%, 40%);">+useragent=Vox Callcontrol</span><br><span style="color: hsl(120, 100%, 40%);">+promiscredir=yes</span><br><span style="color: hsl(120, 100%, 40%);">+disallow=all</span><br><span style="color: hsl(120, 100%, 40%);">+allow=alaw</span><br><span style="color: hsl(120, 100%, 40%);">+allow=ulaw</span><br><span style="color: hsl(120, 100%, 40%);">+allow=g729</span><br><span style="color: hsl(120, 100%, 40%);">+allow=h263p</span><br><span style="color: hsl(120, 100%, 40%);">+allow=h264</span><br><span style="color: hsl(120, 100%, 40%);">+rtcachefriends=yes</span><br><span style="color: hsl(120, 100%, 40%);">+rtautoclear=86400</span><br><span style="color: hsl(120, 100%, 40%);">+sendrpid=yes</span><br><span style="color: hsl(120, 100%, 40%);">+videosupport=yes</span><br><span style="color: hsl(120, 100%, 40%);">+maxcallbitrate=20</span><br><span style="color: hsl(120, 100%, 40%);">+relaxdtmf=yes</span><br><span style="color: hsl(120, 100%, 40%);">+t38pt_udptl=yes,redundancy</span><br><span style="color: hsl(120, 100%, 40%);">+sdpsession=session</span><br><span style="color: hsl(120, 100%, 40%);">+ignoresdpversion=yes</span><br><span style="color: hsl(120, 100%, 40%);">+use_q850_reason=yes</span><br><span style="color: hsl(120, 100%, 40%);">+dtlsverify= no</span><br><span style="color: hsl(120, 100%, 40%);">+dtlsrekey= 300</span><br><span style="color: hsl(120, 100%, 40%);">+dtlscipher=ALL</span><br><span style="color: hsl(120, 100%, 40%);">+dtlscertfile= /etc/asterisk/keys/asterisk.crt</span><br><span style="color: hsl(120, 100%, 40%);">+dtlsprivatekey= /etc/asterisk/keys/asterisk.key</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[PEER_A]</span><br><span style="color: hsl(120, 100%, 40%);">+type = peer</span><br><span style="color: hsl(120, 100%, 40%);">+host = 127.0.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+port=5061</span><br><span style="color: hsl(120, 100%, 40%);">+context=default</span><br><span style="color: hsl(120, 100%, 40%);">+t38pt_udptl = yes</span><br><span style="color: hsl(120, 100%, 40%);">+allow = ulaw</span><br><span style="color: hsl(120, 100%, 40%);">+allow = g729</span><br><span style="color: hsl(120, 100%, 40%);">+dtmfmode = rfc2833</span><br><span style="color: hsl(120, 100%, 40%);">+insecure = invite</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[sbc]</span><br><span style="color: hsl(120, 100%, 40%);">+host=127.0.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+port=5700</span><br><span style="color: hsl(120, 100%, 40%);">+type=peer</span><br><span style="color: hsl(120, 100%, 40%);">+insecure=invite</span><br><span style="color: hsl(120, 100%, 40%);">+context=callcontrol</span><br><span style="color: hsl(120, 100%, 40%);">+canreinvite=no</span><br><span style="color: hsl(120, 100%, 40%);">+allow = ulaw</span><br><span style="color: hsl(120, 100%, 40%);">+allow = g729</span><br><span style="color: hsl(120, 100%, 40%);">+dtmfmode = rfc2833</span><br><span style="color: hsl(120, 100%, 40%);">+t38pt_udptl = no</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_a_leg/run-test b/tests/t38_enabled_two_reinvite_on_a_leg/run-test</span><br><span>new file mode 100755</span><br><span>index 0000000..8651d94</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_a_leg/run-test</span><br><span>@@ -0,0 +1,103 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/usr/bin/env python</span><br><span style="color: hsl(120, 100%, 40%);">+# vim: sw=3 et:</span><br><span style="color: hsl(120, 100%, 40%);">+'''</span><br><span style="color: hsl(120, 100%, 40%);">+Copyright (C) 2011, Digium, Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+Matthew Nicholson <mnicholson@digium.com></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+This program is free software, distributed under the terms of</span><br><span style="color: hsl(120, 100%, 40%);">+the GNU General Public License Version 2.</span><br><span style="color: hsl(120, 100%, 40%);">+'''</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import sys</span><br><span style="color: hsl(120, 100%, 40%);">+import os</span><br><span style="color: hsl(120, 100%, 40%);">+import re</span><br><span style="color: hsl(120, 100%, 40%);">+import shutil</span><br><span style="color: hsl(120, 100%, 40%);">+import logging</span><br><span style="color: hsl(120, 100%, 40%);">+import signal</span><br><span style="color: hsl(120, 100%, 40%);">+import subprocess</span><br><span style="color: hsl(120, 100%, 40%);">+import time</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+from twisted.internet import reactor</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+sys.path.append("lib/python")</span><br><span style="color: hsl(120, 100%, 40%);">+sys.path.append("utils")</span><br><span style="color: hsl(120, 100%, 40%);">+from asterisk.asterisk import Asterisk</span><br><span style="color: hsl(120, 100%, 40%);">+from asterisk.sipp import SIPpTest</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+logger = logging.getLogger(__name__)</span><br><span style="color: hsl(120, 100%, 40%);">+WORKING_DIR = os.path.abspath(os.path.dirname(__file__))</span><br><span style="color: hsl(120, 100%, 40%);">+TEST_DIR = os.path.dirname(os.path.realpath(__file__))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+e164 = "3200000000"</span><br><span style="color: hsl(120, 100%, 40%);">+sippA_logfile = WORKING_DIR + "/A_PARTY.log"</span><br><span style="color: hsl(120, 100%, 40%);">+sippA_errfile = WORKING_DIR + "/A_PARTY_ERR.log"</span><br><span style="color: hsl(120, 100%, 40%);">+sippA_statfile = WORKING_DIR + "/A_PARTY_STAT.log"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+sippB_logfile = WORKING_DIR + "/B_PARTY.log"</span><br><span style="color: hsl(120, 100%, 40%);">+sippB_errfile = WORKING_DIR + "/B_PARTY_ERR.log"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SIPP_SCENARIOS = [</span><br><span style="color: hsl(120, 100%, 40%);">+    {</span><br><span style="color: hsl(120, 100%, 40%);">+        'scenario' : 'B_PARTY.xml',</span><br><span style="color: hsl(120, 100%, 40%);">+        '-i' : '127.0.0.1',</span><br><span style="color: hsl(120, 100%, 40%);">+        '-p' : '5700',</span><br><span style="color: hsl(120, 100%, 40%);">+        '-message_file' : sippB_logfile,</span><br><span style="color: hsl(120, 100%, 40%);">+        '-error_file' : sippB_errfile,</span><br><span style="color: hsl(120, 100%, 40%);">+        '-trace_msg' : '-trace_err',</span><br><span style="color: hsl(120, 100%, 40%);">+    },</span><br><span style="color: hsl(120, 100%, 40%);">+    {</span><br><span style="color: hsl(120, 100%, 40%);">+        'scenario' : 'A_PARTY.xml',</span><br><span style="color: hsl(120, 100%, 40%);">+        '-i' : '127.0.0.1',</span><br><span style="color: hsl(120, 100%, 40%);">+        '-p' : '5061',</span><br><span style="color: hsl(120, 100%, 40%);">+        '-s' : e164,</span><br><span style="color: hsl(120, 100%, 40%);">+        '-message_file' : sippA_logfile,</span><br><span style="color: hsl(120, 100%, 40%);">+        '-error_file' : sippA_errfile,</span><br><span style="color: hsl(120, 100%, 40%);">+        '-trace_msg' : '-trace_err',</span><br><span style="color: hsl(120, 100%, 40%);">+        '-trace_stat' : '-trace_stat',</span><br><span style="color: hsl(120, 100%, 40%);">+        '-stf' : sippA_statfile,</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+def main():</span><br><span style="color: hsl(120, 100%, 40%);">+    test = SIPpTest(WORKING_DIR, TEST_DIR, SIPP_SCENARIOS)</span><br><span style="color: hsl(120, 100%, 40%);">+    logger.info ("Running against asterisk version %s" %test.ast_version)</span><br><span style="color: hsl(120, 100%, 40%);">+                 </span><br><span style="color: hsl(120, 100%, 40%);">+    test.reactor_timeout = 100;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    dump_A = WORKING_DIR + "/carrier_rtp.log"</span><br><span style="color: hsl(120, 100%, 40%);">+    dump_B = WORKING_DIR + "/customer_rtp.log"</span><br><span style="color: hsl(120, 100%, 40%);">+    rtpdump_A = subprocess.Popen(["rtpdump", "-t","5", "-F","ascii","-d","101","-o",dump_A, "127.0.0.1/9000"])</span><br><span style="color: hsl(120, 100%, 40%);">+    rtpdump_B = subprocess.Popen(["rtpdump", "-t","5", "-F","ascii","-d","101","-o",dump_B, "127.0.0.1/8000"])</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    #Run the agi_load_balance_emulator</span><br><span style="color: hsl(120, 100%, 40%);">+    agiLoadBalancer = subprocess.Popen(["perl","utils/agi_load_balance_emulator.pl"])</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    #Run the vcc_emulator</span><br><span style="color: hsl(120, 100%, 40%);">+    vcc_emulator = voxcallcontrol.start_emulator(WORKING_DIR, "sbc")</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    time.sleep(10) #Wait 10 seconds to ensure that all the sockets are open before running the test  </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    reactor.run()</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    # Kill the RTPDUMP, pass it the signal"</span><br><span style="color: hsl(120, 100%, 40%);">+    rtpdump_A.send_signal(signal.SIGINT)     </span><br><span style="color: hsl(120, 100%, 40%);">+    rtpdump_A.wait()</span><br><span style="color: hsl(120, 100%, 40%);">+    rtpdump_B.send_signal(signal.SIGINT)        </span><br><span style="color: hsl(120, 100%, 40%);">+    rtpdump_B.wait()</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    #Verify that audio packets were routed in both directions after G711 fallback</span><br><span style="color: hsl(120, 100%, 40%);">+    if (os.path.getsize(dump_B) == 0):</span><br><span style="color: hsl(120, 100%, 40%);">+        logger.error("No RTP routed towards customer ...failing the test")</span><br><span style="color: hsl(120, 100%, 40%);">+        return 1</span><br><span style="color: hsl(120, 100%, 40%);">+    if (os.path.getsize(dump_A) == 0):</span><br><span style="color: hsl(120, 100%, 40%);">+        logger.error("No RTP routed towards carrier ...failing the test")</span><br><span style="color: hsl(120, 100%, 40%);">+        return 1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    if not test.passed:</span><br><span style="color: hsl(120, 100%, 40%);">+        return 1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    return 0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+if __name__ == "__main__":</span><br><span style="color: hsl(120, 100%, 40%);">+    sys.exit(main() or 0)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_a_leg/sipp/A_PARTY.xml b/tests/t38_enabled_two_reinvite_on_a_leg/sipp/A_PARTY.xml</span><br><span>new file mode 100644</span><br><span>index 0000000..12b0d8f</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_a_leg/sipp/A_PARTY.xml</span><br><span>@@ -0,0 +1,226 @@</span><br><span style="color: hsl(120, 100%, 40%);">+<?xml version="1.0" encoding="ISO-8859-1" ?></span><br><span style="color: hsl(120, 100%, 40%);">+<!DOCTYPE scenario SYSTEM "sipp.dtd"></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<scenario name="T38 REINVTE"></span><br><span style="color: hsl(120, 100%, 40%);">+<send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+Via: SIP/2.0/UDP [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+From: <sip:390415094280@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]</span><br><span style="color: hsl(120, 100%, 40%);">+To: <sip:[service]@[remote_ip]:[remote_port]></span><br><span style="color: hsl(120, 100%, 40%);">+Call-ID: [call_id]</span><br><span style="color: hsl(120, 100%, 40%);">+X-VCC-UUID: [pid][clock_tick][call_number]</span><br><span style="color: hsl(120, 100%, 40%);">+X-VCC-Provider: 61 [local_ip] BEL</span><br><span style="color: hsl(120, 100%, 40%);">+Supported: rel1xx,timer,replaces</span><br><span style="color: hsl(120, 100%, 40%);">+Min-SE:  181</span><br><span style="color: hsl(120, 100%, 40%);">+User-Agent: Cisco-SIPGateway/IOS-12.x</span><br><span style="color: hsl(120, 100%, 40%);">+Allow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, COMET, REFER, SUBSCRIBE, NOTIFY, INFO, UPDATE, REGISTER</span><br><span style="color: hsl(120, 100%, 40%);">+CSeq: 101 INVITE</span><br><span style="color: hsl(120, 100%, 40%);">+Max-Forwards: 69</span><br><span style="color: hsl(120, 100%, 40%);">+Contact: <sip:390415094280@[local_ip]:[local_port]></span><br><span style="color: hsl(120, 100%, 40%);">+Expires: 180</span><br><span style="color: hsl(120, 100%, 40%);">+Allow-Events: telephone-event</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Type: application/sdp</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: [len]</span><br><span style="color: hsl(120, 100%, 40%);">+      </span><br><span style="color: hsl(120, 100%, 40%);">+v=0</span><br><span style="color: hsl(120, 100%, 40%);">+o=CiscoSystemsSIP-GW-UserAgent 9624 5279 IN IP4 [local_ip]</span><br><span style="color: hsl(120, 100%, 40%);">+s=SIP Call</span><br><span style="color: hsl(120, 100%, 40%);">+c=IN IP4 [media_ip]</span><br><span style="color: hsl(120, 100%, 40%);">+t=0 0</span><br><span style="color: hsl(120, 100%, 40%);">+m=audio 9000 RTP/AVP 0 18 101</span><br><span style="color: hsl(120, 100%, 40%);">+c=IN IP[local_ip_type] [local_ip]</span><br><span style="color: hsl(120, 100%, 40%);">+a=rtpmap:101 telephone-event/101</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+]]></span><br><span style="color: hsl(120, 100%, 40%);">+</send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="100"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="100" optional="true"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="100" optional="true"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="180" optional="true"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="183" optional="true"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="200" rrs="true"></span><br><span style="color: hsl(120, 100%, 40%);">+   <action></span><br><span style="color: hsl(120, 100%, 40%);">+          <ereg regexp="[[:punct:]](.*)[[:punct:]]" search_in="hdr" header="Contact:" check_it="true" assign_to="6,1" /></span><br><span style="color: hsl(120, 100%, 40%);">+        <ereg regexp=".*" search_in="hdr" header="From:" check_it="true" assign_to="2" /></span><br><span style="color: hsl(120, 100%, 40%);">+     <ereg regexp=".*" search_in="hdr" header="To:" check_it="true" assign_to="3" /></span><br><span style="color: hsl(120, 100%, 40%);">+       <log message="Log to avoid the problem of not using $6 [$6]"/></span><br><span style="color: hsl(120, 100%, 40%);">+   </action></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<send></span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ACK [next_url] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+[routes]</span><br><span style="color: hsl(120, 100%, 40%);">+Via: SIP/2.0/UDP [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+From: [$2]</span><br><span style="color: hsl(120, 100%, 40%);">+To: [$3]</span><br><span style="color: hsl(120, 100%, 40%);">+Call-ID: [call_id]</span><br><span style="color: hsl(120, 100%, 40%);">+Max-Forwards: 69</span><br><span style="color: hsl(120, 100%, 40%);">+CSeq: 101 ACK</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: [len]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+]]></span><br><span style="color: hsl(120, 100%, 40%);">+</send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<pause milliseconds="2000"/></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INVITE [$1] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+From: [$2]</span><br><span style="color: hsl(120, 100%, 40%);">+To: [$3]</span><br><span style="color: hsl(120, 100%, 40%);">+Call-ID: [call_id]</span><br><span style="color: hsl(120, 100%, 40%);">+CSeq: 102 INVITE</span><br><span style="color: hsl(120, 100%, 40%);">+Contact: <sip:[local_ip]:[local_port]></span><br><span style="color: hsl(120, 100%, 40%);">+Max-Forwards: 70</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Type: application/sdp</span><br><span style="color: hsl(120, 100%, 40%);">+[routes]</span><br><span style="color: hsl(120, 100%, 40%);">+Allow-Events: telephone-event</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: [len] </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+v=0</span><br><span style="color: hsl(120, 100%, 40%);">+o=CiscoSystemsSIP-GW-UserAgent 9624 5280 IN IP4 [local_ip]</span><br><span style="color: hsl(120, 100%, 40%);">+s=Asterisk PBX 1.6.2.0</span><br><span style="color: hsl(120, 100%, 40%);">+c=IN IP[local_ip_type] [local_ip]</span><br><span style="color: hsl(120, 100%, 40%);">+t=0 0</span><br><span style="color: hsl(120, 100%, 40%);">+m=image 4389 udptl t38</span><br><span style="color: hsl(120, 100%, 40%);">+a=T38FaxVersion:0</span><br><span style="color: hsl(120, 100%, 40%);">+a=T38MaxBitRate:14400</span><br><span style="color: hsl(120, 100%, 40%);">+a=T38FaxRateManagement:transferredTCF</span><br><span style="color: hsl(120, 100%, 40%);">+a=T38FaxMaxDatagram:1400</span><br><span style="color: hsl(120, 100%, 40%);">+a=T38FaxUdpEC:t38UDPRedundancy</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+]]></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="100" optional="true"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+  </span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="488" rrs="true"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<send></span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ACK [$1] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]</span><br><span style="color: hsl(120, 100%, 40%);">+[last_From]</span><br><span style="color: hsl(120, 100%, 40%);">+[last_To]</span><br><span style="color: hsl(120, 100%, 40%);">+CSeq: 102 ACK</span><br><span style="color: hsl(120, 100%, 40%);">+Max-Forwards: 70</span><br><span style="color: hsl(120, 100%, 40%);">+[routes]</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+]]></span><br><span style="color: hsl(120, 100%, 40%);">+</send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<pause milliseconds="2000"/></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INVITE [$1] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]</span><br><span style="color: hsl(120, 100%, 40%);">+From: [$2]</span><br><span style="color: hsl(120, 100%, 40%);">+To: [$3]</span><br><span style="color: hsl(120, 100%, 40%);">+CSeq: 103 INVITE</span><br><span style="color: hsl(120, 100%, 40%);">+Contact: <sip:[local_ip]:[local_port]></span><br><span style="color: hsl(120, 100%, 40%);">+Max-Forwards: 70</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Type: application/sdp</span><br><span style="color: hsl(120, 100%, 40%);">+[routes]</span><br><span style="color: hsl(120, 100%, 40%);">+Allow-Events: telephone-event</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: [len] </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+v=0</span><br><span style="color: hsl(120, 100%, 40%);">+o=HuaweiSoftX3000 6644052 6644052 IN IP[local_ip_type] [local_ip]</span><br><span style="color: hsl(120, 100%, 40%);">+s=Sip Call</span><br><span style="color: hsl(120, 100%, 40%);">+c=IN IP[media_ip_type] [media_ip]</span><br><span style="color: hsl(120, 100%, 40%);">+t=0 0</span><br><span style="color: hsl(120, 100%, 40%);">+m=audio 9000 RTP/AVP 0 18 101</span><br><span style="color: hsl(120, 100%, 40%);">+c=IN IP[local_ip_type] [local_ip]</span><br><span style="color: hsl(120, 100%, 40%);">+a=rtpmap:101 telephone-event/101</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+]]></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="100" optional="true"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+  </span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="200" rrs="true"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<send></span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ACK [$1] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]</span><br><span style="color: hsl(120, 100%, 40%);">+[last_From]</span><br><span style="color: hsl(120, 100%, 40%);">+[last_To]</span><br><span style="color: hsl(120, 100%, 40%);">+CSeq: 103 ACK</span><br><span style="color: hsl(120, 100%, 40%);">+Max-Forwards: 70</span><br><span style="color: hsl(120, 100%, 40%);">+[routes]</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+]]></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<pause milliseconds="2000" /></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<nop></span><br><span style="color: hsl(120, 100%, 40%);">+  <action></span><br><span style="color: hsl(120, 100%, 40%);">+    <exec play_pcap_audio="./tests/channels/SIP/ASTERISK_T38_ENABLED_TWO_REINVITE_FROM_CARRIER/sipp/CARRIER_G711U.pcap"/></span><br><span style="color: hsl(120, 100%, 40%);">+  </action></span><br><span style="color: hsl(120, 100%, 40%);">+</nop></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<pause milliseconds="50000" /></span><br><span style="color: hsl(120, 100%, 40%);">+  </span><br><span style="color: hsl(120, 100%, 40%);">+<send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+BYE [$1] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+Via: SIP/2.0/UDP [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+To: [$3]</span><br><span style="color: hsl(120, 100%, 40%);">+From: [$2]</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]</span><br><span style="color: hsl(120, 100%, 40%);">+User-Agent: Cisco-SIPGateway/IOS-12.x</span><br><span style="color: hsl(120, 100%, 40%);">+Max-Forwards: 69</span><br><span style="color: hsl(120, 100%, 40%);">+CSeq: 104 BYE</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+]]></span><br><span style="color: hsl(120, 100%, 40%);">+</send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="200"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</scenario></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_a_leg/sipp/B_PARTY.xml b/tests/t38_enabled_two_reinvite_on_a_leg/sipp/B_PARTY.xml</span><br><span>new file mode 100644</span><br><span>index 0000000..432bb74</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_a_leg/sipp/B_PARTY.xml</span><br><span>@@ -0,0 +1,136 @@</span><br><span style="color: hsl(120, 100%, 40%);">+<?xml version="1.0" encoding="ISO-8859-1" ?>
</span><br><span style="color: hsl(120, 100%, 40%);">+<!DOCTYPE scenario SYSTEM "sipp.dtd">
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<scenario name="T38 REINVITE">
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<recv request="INVITE" crlf="true"  rrs="true">
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<action>
</span><br><span style="color: hsl(120, 100%, 40%);">+  <ereg regexp="[[:punct:]](.*)[[:punct:]]" search_in="hdr" header="Contact:" check_it="true" assign_to="6,1" />
</span><br><span style="color: hsl(120, 100%, 40%);">+  <ereg regexp=".*" search_in="hdr" header="From:" check_it="true" assign_to="2" />
</span><br><span style="color: hsl(120, 100%, 40%);">+  <ereg regexp=".*" search_in="hdr" header="To:" check_it="true" assign_to="3" />
</span><br><span style="color: hsl(120, 100%, 40%);">+  <log message="Log to avoid the problem of not using $3 [$3]"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+  <log message="Log to avoid the problem of not using $1 [$1]"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+  <log message="Log to avoid the problem of not using $2 [$2]"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+  <log message="Log to avoid the problem of not using $6 [$6]"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+</action>
</span><br><span style="color: hsl(120, 100%, 40%);">+</recv>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<send>
</span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+SIP/2.0 100 Trying
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Via:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_From:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_To:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_CSeq:]
</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: 0
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+]]>
</span><br><span style="color: hsl(120, 100%, 40%);">+</send>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<send retrans="500">
</span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+SIP/2.0 200 OK
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Via:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_From:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_To:];tag=[call_number]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_CSeq:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Record-Route]
</span><br><span style="color: hsl(120, 100%, 40%);">+Contact: <sip:bansallaptop@[local_ip]:[local_port];user=phone>
</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Type: application/sdp
</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: [len]
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+v=0
</span><br><span style="color: hsl(120, 100%, 40%);">+o=HuaweiSoftX3000 6644052 6644052 IN IP[local_ip_type] [local_ip]
</span><br><span style="color: hsl(120, 100%, 40%);">+s=Sip Call
</span><br><span style="color: hsl(120, 100%, 40%);">+c=IN IP[media_ip_type] [media_ip]
</span><br><span style="color: hsl(120, 100%, 40%);">+t=0 0
</span><br><span style="color: hsl(120, 100%, 40%);">+m=audio 8000 RTP/AVP 0 100 101
</span><br><span style="color: hsl(120, 100%, 40%);">+a=rtpmap:0 PCMU/8000
</span><br><span style="color: hsl(120, 100%, 40%);">+a=rtpmap:100 NSE/8000
</span><br><span style="color: hsl(120, 100%, 40%);">+a=rtpmap:101 telephone-event/101
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+]]>
</span><br><span style="color: hsl(120, 100%, 40%);">+</send>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<recv request="ACK"
</span><br><span style="color: hsl(120, 100%, 40%);">+      rtd="true"
</span><br><span style="color: hsl(120, 100%, 40%);">+      crlf="true">
</span><br><span style="color: hsl(120, 100%, 40%);">+</recv>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<pause milliseconds="500" />
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<!-- play the pcap now as packets will get through before the reinvite
</span><br><span style="color: hsl(120, 100%, 40%);">+     After the reinvite B leg sending fails because sipp changes destination port to suit the reinvite port which is incorrect
</span><br><span style="color: hsl(120, 100%, 40%);">+     for the original call that was negotiated
</span><br><span style="color: hsl(120, 100%, 40%);">+     After the reinvite the packets get destination port unreachable.
</span><br><span style="color: hsl(120, 100%, 40%);">+     All the A leg packets get through because asterisk behave correctly
</span><br><span style="color: hsl(120, 100%, 40%);">+     -->
</span><br><span style="color: hsl(120, 100%, 40%);">+<nop>
</span><br><span style="color: hsl(120, 100%, 40%);">+  <action>
</span><br><span style="color: hsl(120, 100%, 40%);">+    <exec play_pcap_audio="./tests/channels/SIP/ASTERISK_T38_ENABLED_TWO_REINVITE_FROM_CARRIER/sipp/CUSTOMER_G711U.pcap"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+  </action>
</span><br><span style="color: hsl(120, 100%, 40%);">+</nop>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<recv request="INVITE" crlf="true"  rrs="true">
</span><br><span style="color: hsl(120, 100%, 40%);">+</recv>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<pause milliseconds="200" />
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<send retrans="500">
</span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+SIP/2.0 488 Not Acceptable Here
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Via:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_To:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_From:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Cseq:] </span><br><span style="color: hsl(120, 100%, 40%);">+Contact: <sip:390415094280@[local_ip]:[local_port]>
</span><br><span style="color: hsl(120, 100%, 40%);">+User-Agent: Cisco-SIPGateway/IOS-12.x
</span><br><span style="color: hsl(120, 100%, 40%);">+Max-Forwards: 69
</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: 0
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+]]>
</span><br><span style="color: hsl(120, 100%, 40%);">+</send>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<recv request="ACK"
</span><br><span style="color: hsl(120, 100%, 40%);">+      rtd="true"
</span><br><span style="color: hsl(120, 100%, 40%);">+      crlf="true">
</span><br><span style="color: hsl(120, 100%, 40%);">+</recv>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<recv request="BYE">
</span><br><span style="color: hsl(120, 100%, 40%);">+</recv>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<send>
</span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+SIP/2.0 200 OK
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Via:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_From:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_To:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_CSeq:]
</span><br><span style="color: hsl(120, 100%, 40%);">+Contact: <sip:[local_ip]:[local_port];transport=[transport]>
</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: 0
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+    ]]>
</span><br><span style="color: hsl(120, 100%, 40%);">+</send>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<!-- Keep the call open for a while in case the 200 is lost to be     -->
</span><br><span style="color: hsl(120, 100%, 40%);">+<!-- able to retransmit it if we receive the BYE again.               -->
</span><br><span style="color: hsl(120, 100%, 40%);">+<pause milliseconds="4000"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<!-- definition of the response time repartition table (unit is ms)   -->
</span><br><span style="color: hsl(120, 100%, 40%);">+<ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<!-- definition of the call length repartition table (unit is ms)     -->
</span><br><span style="color: hsl(120, 100%, 40%);">+<CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+</scenario>
</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_a_leg/sipp/CARRIER_G711U.pcap b/tests/t38_enabled_two_reinvite_on_a_leg/sipp/CARRIER_G711U.pcap</span><br><span>new file mode 100644</span><br><span>index 0000000..986a449</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_a_leg/sipp/CARRIER_G711U.pcap</span><br><span>Binary files differ</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_a_leg/sipp/CUSTOMER_G711U.pcap b/tests/t38_enabled_two_reinvite_on_a_leg/sipp/CUSTOMER_G711U.pcap</span><br><span>new file mode 100644</span><br><span>index 0000000..464426f</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_a_leg/sipp/CUSTOMER_G711U.pcap</span><br><span>Binary files differ</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_a_leg/test-config.yaml b/tests/t38_enabled_two_reinvite_on_a_leg/test-config.yaml</span><br><span>new file mode 100644</span><br><span>index 0000000..abd9400</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_a_leg/test-config.yaml</span><br><span>@@ -0,0 +1,13 @@</span><br><span style="color: hsl(120, 100%, 40%);">+testinfo:</span><br><span style="color: hsl(120, 100%, 40%);">+    summary: 'Test that asterisk does not drop the call after it rejects the T38 reinvite from the carrier side because customer does not suport it and and continues to forward the audio packets after fallback to G711'</span><br><span style="color: hsl(120, 100%, 40%);">+    description: |</span><br><span style="color: hsl(120, 100%, 40%);">+        'Test that asterisk does not drop the call after it rejects the T38 reinvite from the carrier side because customer does not suport it and and continues to forward the audio packets after fallback to G711'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+properties:</span><br><span style="color: hsl(120, 100%, 40%);">+    minversion: '1.4'</span><br><span style="color: hsl(120, 100%, 40%);">+    dependencies:</span><br><span style="color: hsl(120, 100%, 40%);">+        - python : 'twisted'</span><br><span style="color: hsl(120, 100%, 40%);">+        - python : 'starpy'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    tags:</span><br><span style="color: hsl(120, 100%, 40%);">+        - SIP</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_b_leg/configs/ast1/extensions.conf b/tests/t38_enabled_two_reinvite_on_b_leg/configs/ast1/extensions.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..b29ad89</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_b_leg/configs/ast1/extensions.conf</span><br><span>@@ -0,0 +1,5 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[general]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[default]</span><br><span style="color: hsl(120, 100%, 40%);">+exten => 3200000000,1,Dial(PJSIP/sbc)</span><br><span style="color: hsl(120, 100%, 40%);">+exten => 3200000000,2,Hangup()</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_b_leg/configs/ast1/pjsip.conf b/tests/t38_enabled_two_reinvite_on_b_leg/configs/ast1/pjsip.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..7db6e53</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_b_leg/configs/ast1/pjsip.conf</span><br><span>@@ -0,0 +1,53 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[global]</span><br><span style="color: hsl(120, 100%, 40%);">+type = global</span><br><span style="color: hsl(120, 100%, 40%);">+user_agent = Callcontrol</span><br><span style="color: hsl(120, 100%, 40%);">+debug = yes</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[transport-udp6]</span><br><span style="color: hsl(120, 100%, 40%);">+type = transport</span><br><span style="color: hsl(120, 100%, 40%);">+protocol = udp</span><br><span style="color: hsl(120, 100%, 40%);">+bind = [::]:5060</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[transport-udp]</span><br><span style="color: hsl(120, 100%, 40%);">+type = transport</span><br><span style="color: hsl(120, 100%, 40%);">+protocol = udp</span><br><span style="color: hsl(120, 100%, 40%);">+bind = 0.0.0.0:5060</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[PEER_A]</span><br><span style="color: hsl(120, 100%, 40%);">+type = aor</span><br><span style="color: hsl(120, 100%, 40%);">+contact = sip:127.0.0.1:5061</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[PEER_A]</span><br><span style="color: hsl(120, 100%, 40%);">+type = identify</span><br><span style="color: hsl(120, 100%, 40%);">+endpoint = PEER_A</span><br><span style="color: hsl(120, 100%, 40%);">+match = 127.0.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[PEER_A]</span><br><span style="color: hsl(120, 100%, 40%);">+type = endpoint</span><br><span style="color: hsl(120, 100%, 40%);">+context = default</span><br><span style="color: hsl(120, 100%, 40%);">+dtmf_mode = rfc4733</span><br><span style="color: hsl(120, 100%, 40%);">+disallow = all</span><br><span style="color: hsl(120, 100%, 40%);">+allow = ulaw;g729</span><br><span style="color: hsl(120, 100%, 40%);">+direct_media = no</span><br><span style="color: hsl(120, 100%, 40%);">+send_rpid = yes</span><br><span style="color: hsl(120, 100%, 40%);">+sdp_session = session</span><br><span style="color: hsl(120, 100%, 40%);">+aors = PEER_A</span><br><span style="color: hsl(120, 100%, 40%);">+t38_udptl = yes</span><br><span style="color: hsl(120, 100%, 40%);">+t38_udptl_ec = none</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[sbc]</span><br><span style="color: hsl(120, 100%, 40%);">+type = aor</span><br><span style="color: hsl(120, 100%, 40%);">+contact = sip:127.0.0.1:5700</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[sbc]</span><br><span style="color: hsl(120, 100%, 40%);">+type = endpoint</span><br><span style="color: hsl(120, 100%, 40%);">+context = callcontrol</span><br><span style="color: hsl(120, 100%, 40%);">+dtmf_mode = rfc4733</span><br><span style="color: hsl(120, 100%, 40%);">+disallow = all</span><br><span style="color: hsl(120, 100%, 40%);">+allow = ulaw;g729</span><br><span style="color: hsl(120, 100%, 40%);">+direct_media = no</span><br><span style="color: hsl(120, 100%, 40%);">+send_rpid = yes</span><br><span style="color: hsl(120, 100%, 40%);">+sdp_session = session</span><br><span style="color: hsl(120, 100%, 40%);">+aors = sbc</span><br><span style="color: hsl(120, 100%, 40%);">+t38_udptl = yes </span><br><span style="color: hsl(120, 100%, 40%);">+t38_udptl_ec = none</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_b_leg/configs/ast1/sip.conf b/tests/t38_enabled_two_reinvite_on_b_leg/configs/ast1/sip.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..85f3d79</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_b_leg/configs/ast1/sip.conf</span><br><span>@@ -0,0 +1,59 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[general]</span><br><span style="color: hsl(120, 100%, 40%);">+sipdebug=yes</span><br><span style="color: hsl(120, 100%, 40%);">+udpbindaddr=[::]:5060</span><br><span style="color: hsl(120, 100%, 40%);">+tcpenable=no</span><br><span style="color: hsl(120, 100%, 40%);">+tlsenable=no</span><br><span style="color: hsl(120, 100%, 40%);">+transport=udp</span><br><span style="color: hsl(120, 100%, 40%);">+canreinvite=no</span><br><span style="color: hsl(120, 100%, 40%);">+nat=no</span><br><span style="color: hsl(120, 100%, 40%);">+srvlookup=yes</span><br><span style="color: hsl(120, 100%, 40%);">+context=block</span><br><span style="color: hsl(120, 100%, 40%);">+pedantic=yes</span><br><span style="color: hsl(120, 100%, 40%);">+dtmfmode=rfc2833</span><br><span style="color: hsl(120, 100%, 40%);">+realm=voxbone.com</span><br><span style="color: hsl(120, 100%, 40%);">+useragent=Vox Callcontrol</span><br><span style="color: hsl(120, 100%, 40%);">+promiscredir=yes</span><br><span style="color: hsl(120, 100%, 40%);">+disallow=all</span><br><span style="color: hsl(120, 100%, 40%);">+allow=alaw</span><br><span style="color: hsl(120, 100%, 40%);">+allow=ulaw</span><br><span style="color: hsl(120, 100%, 40%);">+allow=g729</span><br><span style="color: hsl(120, 100%, 40%);">+allow=h263p</span><br><span style="color: hsl(120, 100%, 40%);">+allow=h264</span><br><span style="color: hsl(120, 100%, 40%);">+rtcachefriends=yes</span><br><span style="color: hsl(120, 100%, 40%);">+rtautoclear=86400</span><br><span style="color: hsl(120, 100%, 40%);">+sendrpid=yes</span><br><span style="color: hsl(120, 100%, 40%);">+videosupport=yes</span><br><span style="color: hsl(120, 100%, 40%);">+maxcallbitrate=20</span><br><span style="color: hsl(120, 100%, 40%);">+relaxdtmf=yes</span><br><span style="color: hsl(120, 100%, 40%);">+t38pt_udptl=yes,redundancy</span><br><span style="color: hsl(120, 100%, 40%);">+sdpsession=session</span><br><span style="color: hsl(120, 100%, 40%);">+ignoresdpversion=yes</span><br><span style="color: hsl(120, 100%, 40%);">+use_q850_reason=yes</span><br><span style="color: hsl(120, 100%, 40%);">+dtlsverify= no</span><br><span style="color: hsl(120, 100%, 40%);">+dtlsrekey= 300</span><br><span style="color: hsl(120, 100%, 40%);">+dtlscipher=ALL</span><br><span style="color: hsl(120, 100%, 40%);">+dtlscertfile= /etc/asterisk/keys/asterisk.crt</span><br><span style="color: hsl(120, 100%, 40%);">+dtlsprivatekey= /etc/asterisk/keys/asterisk.key</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[PEER_A]</span><br><span style="color: hsl(120, 100%, 40%);">+type = peer</span><br><span style="color: hsl(120, 100%, 40%);">+host = 127.0.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+port=5061</span><br><span style="color: hsl(120, 100%, 40%);">+context=default</span><br><span style="color: hsl(120, 100%, 40%);">+t38pt_udptl = yes</span><br><span style="color: hsl(120, 100%, 40%);">+allow = ulaw</span><br><span style="color: hsl(120, 100%, 40%);">+allow = g729</span><br><span style="color: hsl(120, 100%, 40%);">+dtmfmode = rfc2833</span><br><span style="color: hsl(120, 100%, 40%);">+insecure = invite</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[sbc]</span><br><span style="color: hsl(120, 100%, 40%);">+host=127.0.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+port=5700</span><br><span style="color: hsl(120, 100%, 40%);">+type=peer</span><br><span style="color: hsl(120, 100%, 40%);">+insecure=invite</span><br><span style="color: hsl(120, 100%, 40%);">+context=callcontrol</span><br><span style="color: hsl(120, 100%, 40%);">+canreinvite=no</span><br><span style="color: hsl(120, 100%, 40%);">+allow = ulaw</span><br><span style="color: hsl(120, 100%, 40%);">+allow = g729</span><br><span style="color: hsl(120, 100%, 40%);">+dtmfmode = rfc2833</span><br><span style="color: hsl(120, 100%, 40%);">+t38pt_udptl = no</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_b_leg/run-test b/tests/t38_enabled_two_reinvite_on_b_leg/run-test</span><br><span>new file mode 100755</span><br><span>index 0000000..204c99b</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_b_leg/run-test</span><br><span>@@ -0,0 +1,94 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/usr/bin/env python</span><br><span style="color: hsl(120, 100%, 40%);">+# vim: sw=3 et:</span><br><span style="color: hsl(120, 100%, 40%);">+'''</span><br><span style="color: hsl(120, 100%, 40%);">+Copyright (C) 2011, Digium, Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+Matthew Nicholson <mnicholson@digium.com></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+This program is free software, distributed under the terms of</span><br><span style="color: hsl(120, 100%, 40%);">+the GNU General Public License Version 2.</span><br><span style="color: hsl(120, 100%, 40%);">+'''</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import sys</span><br><span style="color: hsl(120, 100%, 40%);">+import os</span><br><span style="color: hsl(120, 100%, 40%);">+import re</span><br><span style="color: hsl(120, 100%, 40%);">+import shutil</span><br><span style="color: hsl(120, 100%, 40%);">+import logging</span><br><span style="color: hsl(120, 100%, 40%);">+import signal</span><br><span style="color: hsl(120, 100%, 40%);">+import subprocess</span><br><span style="color: hsl(120, 100%, 40%);">+import time</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+from twisted.internet import reactor</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+sys.path.append("lib/python")</span><br><span style="color: hsl(120, 100%, 40%);">+sys.path.append("utils")</span><br><span style="color: hsl(120, 100%, 40%);">+from asterisk.asterisk import Asterisk</span><br><span style="color: hsl(120, 100%, 40%);">+from asterisk.sipp import SIPpTest</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+logger = logging.getLogger(__name__)</span><br><span style="color: hsl(120, 100%, 40%);">+WORKING_DIR = os.path.abspath(os.path.dirname(__file__))</span><br><span style="color: hsl(120, 100%, 40%);">+TEST_DIR = os.path.dirname(os.path.realpath(__file__))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+e164 = "3200000000"</span><br><span style="color: hsl(120, 100%, 40%);">+sippA_logfile = WORKING_DIR + "/A_PARTY.log"</span><br><span style="color: hsl(120, 100%, 40%);">+sippA_errfile = WORKING_DIR + "/A_PARTY_ERR.log"</span><br><span style="color: hsl(120, 100%, 40%);">+sippA_statfile = WORKING_DIR + "/A_PARTY_STAT.log"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+sippB_logfile = WORKING_DIR + "/B_PARTY.log"</span><br><span style="color: hsl(120, 100%, 40%);">+sippB_errfile = WORKING_DIR + "/B_PARTY_ERR.log"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SIPP_SCENARIOS = [</span><br><span style="color: hsl(120, 100%, 40%);">+    {</span><br><span style="color: hsl(120, 100%, 40%);">+        'scenario' : 'B_PARTY.xml',</span><br><span style="color: hsl(120, 100%, 40%);">+        '-i' : '127.0.0.1',</span><br><span style="color: hsl(120, 100%, 40%);">+        '-p' : '5700',</span><br><span style="color: hsl(120, 100%, 40%);">+        '-message_file' : sippB_logfile,</span><br><span style="color: hsl(120, 100%, 40%);">+        '-error_file' : sippB_errfile,</span><br><span style="color: hsl(120, 100%, 40%);">+        '-trace_msg' : '-trace_err',</span><br><span style="color: hsl(120, 100%, 40%);">+    },</span><br><span style="color: hsl(120, 100%, 40%);">+    {</span><br><span style="color: hsl(120, 100%, 40%);">+        'scenario' : 'A_PARTY.xml',</span><br><span style="color: hsl(120, 100%, 40%);">+        '-i' : '127.0.0.1',</span><br><span style="color: hsl(120, 100%, 40%);">+        '-p' : '5061',</span><br><span style="color: hsl(120, 100%, 40%);">+        '-s' : e164,</span><br><span style="color: hsl(120, 100%, 40%);">+        '-message_file' : sippA_logfile,</span><br><span style="color: hsl(120, 100%, 40%);">+        '-error_file' : sippA_errfile,</span><br><span style="color: hsl(120, 100%, 40%);">+        '-trace_msg' : '-trace_err',</span><br><span style="color: hsl(120, 100%, 40%);">+        '-trace_stat' : '-trace_stat',</span><br><span style="color: hsl(120, 100%, 40%);">+        '-stf' : sippA_statfile,</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+def main():</span><br><span style="color: hsl(120, 100%, 40%);">+    test = SIPpTest(WORKING_DIR, TEST_DIR, SIPP_SCENARIOS)</span><br><span style="color: hsl(120, 100%, 40%);">+    logger.info ("Running against asterisk version %s" %test.ast_version)</span><br><span style="color: hsl(120, 100%, 40%);">+                   </span><br><span style="color: hsl(120, 100%, 40%);">+    test.reactor_timeout = 100;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    dump_A = WORKING_DIR + "/carrier_rtp.log"</span><br><span style="color: hsl(120, 100%, 40%);">+    dump_B = WORKING_DIR + "/customer_rtp.log"</span><br><span style="color: hsl(120, 100%, 40%);">+    rtpdump_A = subprocess.Popen(["rtpdump", "-t","5", "-F","ascii","-d","101","-o",dump_A, "127.0.0.1/9000"])</span><br><span style="color: hsl(120, 100%, 40%);">+    rtpdump_B = subprocess.Popen(["rtpdump", "-t","5", "-F","ascii","-d","101","-o",dump_B, "127.0.0.1/8000"])</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    time.sleep(10) #Wait 10 seconds to ensure that all the sockets are open before running the test    </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    reactor.run()</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    # Kill the RTPDUMP, pass it the signal"</span><br><span style="color: hsl(120, 100%, 40%);">+    rtpdump_A.send_signal(signal.SIGINT)     </span><br><span style="color: hsl(120, 100%, 40%);">+    rtpdump_A.wait()</span><br><span style="color: hsl(120, 100%, 40%);">+    rtpdump_B.send_signal(signal.SIGINT)        </span><br><span style="color: hsl(120, 100%, 40%);">+    rtpdump_B.wait()</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    #Verify that audio packets were routed in both directions after G711 fallback</span><br><span style="color: hsl(120, 100%, 40%);">+    if (os.path.getsize(dump_B) == 0):</span><br><span style="color: hsl(120, 100%, 40%);">+        logger.error("No RTP routed towards customer ...failing the test")</span><br><span style="color: hsl(120, 100%, 40%);">+        return 1</span><br><span style="color: hsl(120, 100%, 40%);">+    if (os.path.getsize(dump_A) == 0):</span><br><span style="color: hsl(120, 100%, 40%);">+        logger.error("No RTP routed towards carrier ...failing the test")</span><br><span style="color: hsl(120, 100%, 40%);">+        return 1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    return 0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+if __name__ == "__main__":</span><br><span style="color: hsl(120, 100%, 40%);">+    sys.exit(main() or 0)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_b_leg/sipp/A_PARTY.xml b/tests/t38_enabled_two_reinvite_on_b_leg/sipp/A_PARTY.xml</span><br><span>new file mode 100644</span><br><span>index 0000000..98e6afb</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_b_leg/sipp/A_PARTY.xml</span><br><span>@@ -0,0 +1,137 @@</span><br><span style="color: hsl(120, 100%, 40%);">+<?xml version="1.0" encoding="ISO-8859-1" ?></span><br><span style="color: hsl(120, 100%, 40%);">+<!DOCTYPE scenario SYSTEM "sipp.dtd"></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<scenario name="T38 REINVTE"></span><br><span style="color: hsl(120, 100%, 40%);">+<send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+Via: SIP/2.0/UDP [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+From: <sip:390415094280@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]</span><br><span style="color: hsl(120, 100%, 40%);">+To: <sip:[service]@[remote_ip]:[remote_port]></span><br><span style="color: hsl(120, 100%, 40%);">+Call-ID: [call_id]</span><br><span style="color: hsl(120, 100%, 40%);">+X-VCC-UUID: [pid][clock_tick][call_number]</span><br><span style="color: hsl(120, 100%, 40%);">+X-VCC-Provider: 61 [local_ip] BEL</span><br><span style="color: hsl(120, 100%, 40%);">+Supported: rel1xx,timer,replaces</span><br><span style="color: hsl(120, 100%, 40%);">+Min-SE:  181</span><br><span style="color: hsl(120, 100%, 40%);">+User-Agent: Cisco-SIPGateway/IOS-12.x</span><br><span style="color: hsl(120, 100%, 40%);">+Allow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, COMET, REFER, SUBSCRIBE, NOTIFY, INFO, UPDATE, REGISTER</span><br><span style="color: hsl(120, 100%, 40%);">+CSeq: 101 INVITE</span><br><span style="color: hsl(120, 100%, 40%);">+Max-Forwards: 69</span><br><span style="color: hsl(120, 100%, 40%);">+Contact: <sip:390415094280@[local_ip]:[local_port]></span><br><span style="color: hsl(120, 100%, 40%);">+Expires: 180</span><br><span style="color: hsl(120, 100%, 40%);">+Allow-Events: telephone-event</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Type: application/sdp</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: [len]</span><br><span style="color: hsl(120, 100%, 40%);">+      </span><br><span style="color: hsl(120, 100%, 40%);">+v=0</span><br><span style="color: hsl(120, 100%, 40%);">+o=CiscoSystemsSIP-GW-UserAgent 9624 5279 IN IP4 [local_ip]</span><br><span style="color: hsl(120, 100%, 40%);">+s=SIP Call</span><br><span style="color: hsl(120, 100%, 40%);">+c=IN IP4 [media_ip]</span><br><span style="color: hsl(120, 100%, 40%);">+t=0 0</span><br><span style="color: hsl(120, 100%, 40%);">+m=audio 9000 RTP/AVP 0 101</span><br><span style="color: hsl(120, 100%, 40%);">+c=IN IP[local_ip_type] [local_ip]</span><br><span style="color: hsl(120, 100%, 40%);">+a=rtpmap:101 telephone-event/101</span><br><span style="color: hsl(120, 100%, 40%);">+a=rtpmap:8 PCMU/8000</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+]]></span><br><span style="color: hsl(120, 100%, 40%);">+</send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="100"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="100" optional="true"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="100" optional="true"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="180" optional="true"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="183" optional="true"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="200" rrs="true"></span><br><span style="color: hsl(120, 100%, 40%);">+  <action></span><br><span style="color: hsl(120, 100%, 40%);">+   <ereg regexp="[[:punct:]](.*)[[:punct:]]" search_in="hdr" header="Contact:" check_it="true" assign_to="6,1" /></span><br><span style="color: hsl(120, 100%, 40%);">+        <ereg regexp=".*" search_in="hdr" header="From:" check_it="true" assign_to="2" /></span><br><span style="color: hsl(120, 100%, 40%);">+     <ereg regexp=".*" search_in="hdr" header="To:" check_it="true" assign_to="3" /></span><br><span style="color: hsl(120, 100%, 40%);">+       <log message="Log to avoid the problem of not using $6 [$6]"/></span><br><span style="color: hsl(120, 100%, 40%);">+   </action></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<send></span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ACK [next_url] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+[routes]</span><br><span style="color: hsl(120, 100%, 40%);">+Via: SIP/2.0/UDP [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+From: [$2]</span><br><span style="color: hsl(120, 100%, 40%);">+To: [$3]</span><br><span style="color: hsl(120, 100%, 40%);">+Call-ID: [call_id]</span><br><span style="color: hsl(120, 100%, 40%);">+Max-Forwards: 69</span><br><span style="color: hsl(120, 100%, 40%);">+CSeq: 101 ACK</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: [len]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+]]></span><br><span style="color: hsl(120, 100%, 40%);">+</send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  <!-- play the pcap now as some of it will get through before sipp screws up and takes the media port from the reinvite which this leg 488's -->  </span><br><span style="color: hsl(120, 100%, 40%);">+<nop></span><br><span style="color: hsl(120, 100%, 40%);">+  <action></span><br><span style="color: hsl(120, 100%, 40%);">+    <exec play_pcap_audio="./tests/channels/SIP/ASTERISK_T38_ENABLED_TWO_REINVITE_FROM_CUSTOMER/sipp/CARRIER_G711U.pcap"/></span><br><span style="color: hsl(120, 100%, 40%);">+  </action></span><br><span style="color: hsl(120, 100%, 40%);">+</nop></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<recv request="INVITE" crlf="true"  rrs="true"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<pause milliseconds="200" /></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SIP/2.0 488 Not Acceptable Here</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Via:]</span><br><span style="color: hsl(120, 100%, 40%);">+[last_To:]</span><br><span style="color: hsl(120, 100%, 40%);">+[last_From:]</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Cseq:] </span><br><span style="color: hsl(120, 100%, 40%);">+Contact: <sip:390415094280@[local_ip]:[local_port]></span><br><span style="color: hsl(120, 100%, 40%);">+User-Agent: Cisco-SIPGateway/IOS-12.x</span><br><span style="color: hsl(120, 100%, 40%);">+Max-Forwards: 69</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+]]></span><br><span style="color: hsl(120, 100%, 40%);">+</send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<recv request="ACK"</span><br><span style="color: hsl(120, 100%, 40%);">+      rtd="true"</span><br><span style="color: hsl(120, 100%, 40%);">+      crlf="true"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<!-- allow data from B Leg to play--></span><br><span style="color: hsl(120, 100%, 40%);">+<pause milliseconds="50000" /></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+BYE [$1] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+Via: SIP/2.0/UDP [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+To: [$3]</span><br><span style="color: hsl(120, 100%, 40%);">+From: [$2]</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]</span><br><span style="color: hsl(120, 100%, 40%);">+User-Agent: Cisco-SIPGateway/IOS-12.x</span><br><span style="color: hsl(120, 100%, 40%);">+Max-Forwards: 69</span><br><span style="color: hsl(120, 100%, 40%);">+CSeq: 102 BYE</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+]]></span><br><span style="color: hsl(120, 100%, 40%);">+</send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="200"></span><br><span style="color: hsl(120, 100%, 40%);">+</recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</scenario></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_b_leg/sipp/B_PARTY.xml b/tests/t38_enabled_two_reinvite_on_b_leg/sipp/B_PARTY.xml</span><br><span>new file mode 100644</span><br><span>index 0000000..cd0696f</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_b_leg/sipp/B_PARTY.xml</span><br><span>@@ -0,0 +1,217 @@</span><br><span style="color: hsl(120, 100%, 40%);">+<?xml version="1.0" encoding="ISO-8859-1" ?>
</span><br><span style="color: hsl(120, 100%, 40%);">+<!DOCTYPE scenario SYSTEM "sipp.dtd">
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<scenario name="T38 REINVITE">
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<recv request="INVITE" crlf="true"  rrs="true">
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<action>
</span><br><span style="color: hsl(120, 100%, 40%);">+  <ereg regexp="[[:punct:]](.*)[[:punct:]]" search_in="hdr" header="Contact:" check_it="true" assign_to="6,1" />
</span><br><span style="color: hsl(120, 100%, 40%);">+  <ereg regexp=".*" search_in="hdr" header="From:" check_it="true" assign_to="2" />
</span><br><span style="color: hsl(120, 100%, 40%);">+  <ereg regexp=".*" search_in="hdr" header="To:" check_it="true" assign_to="3" />
</span><br><span style="color: hsl(120, 100%, 40%);">+  <log message="Log to avoid the problem of not using $3 [$3]"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+  <log message="Log to avoid the problem of not using $1 [$1]"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+  <log message="Log to avoid the problem of not using $2 [$2]"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+  <log message="Log to avoid the problem of not using $6 [$6]"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+</action>
</span><br><span style="color: hsl(120, 100%, 40%);">+</recv>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<send>
</span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+SIP/2.0 100 Trying
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Via:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_From:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_To:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_CSeq:]
</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: 0
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+]]>
</span><br><span style="color: hsl(120, 100%, 40%);">+</send>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<send retrans="500">
</span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+SIP/2.0 200 OK
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Via:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_From:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_To:];tag=[call_number]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_CSeq:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Record-Route]
</span><br><span style="color: hsl(120, 100%, 40%);">+Contact: <sip:bansallaptop@[local_ip]:[local_port];user=phone>
</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Type: application/sdp
</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: [len]
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+v=0
</span><br><span style="color: hsl(120, 100%, 40%);">+o=HuaweiSoftX3000 6644052 6644052 IN IP[local_ip_type] [local_ip]
</span><br><span style="color: hsl(120, 100%, 40%);">+s=Sip Call
</span><br><span style="color: hsl(120, 100%, 40%);">+c=IN IP[media_ip_type] [media_ip]
</span><br><span style="color: hsl(120, 100%, 40%);">+t=0 0
</span><br><span style="color: hsl(120, 100%, 40%);">+m=audio 8000 RTP/AVP 0 100 101
</span><br><span style="color: hsl(120, 100%, 40%);">+a=rtpmap:0 PCMU/8000
</span><br><span style="color: hsl(120, 100%, 40%);">+a=rtpmap:100 NSE/8000
</span><br><span style="color: hsl(120, 100%, 40%);">+a=rtpmap:101 telephone-event/101
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+]]>
</span><br><span style="color: hsl(120, 100%, 40%);">+</send>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<recv request="ACK"
</span><br><span style="color: hsl(120, 100%, 40%);">+      rtd="true"
</span><br><span style="color: hsl(120, 100%, 40%);">+      crlf="true">
</span><br><span style="color: hsl(120, 100%, 40%);">+</recv>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<!-- REINVITE sequence -->
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<pause milliseconds="2000"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<send retrans="500">
</span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+INVITE [$1] SIP/2.0
</span><br><span style="color: hsl(120, 100%, 40%);">+Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]
</span><br><span style="color: hsl(120, 100%, 40%);">+From: [$3];tag=1
</span><br><span style="color: hsl(120, 100%, 40%);">+To: [$2]
</span><br><span style="color: hsl(120, 100%, 40%);">+CSeq: 1 INVITE
</span><br><span style="color: hsl(120, 100%, 40%);">+Contact: <sip:[local_ip]:[local_port]>
</span><br><span style="color: hsl(120, 100%, 40%);">+Max-Forwards: 70
</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Type: application/sdp
</span><br><span style="color: hsl(120, 100%, 40%);">+[routes]
</span><br><span style="color: hsl(120, 100%, 40%);">+Allow-Events: telephone-event
</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: [len] </span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+v=0
</span><br><span style="color: hsl(120, 100%, 40%);">+o=CiscoSystemsSIP-GW-UserAgent 9624 5280 IN IP4 [local_ip]
</span><br><span style="color: hsl(120, 100%, 40%);">+s=Asterisk PBX 1.6.2.0
</span><br><span style="color: hsl(120, 100%, 40%);">+c=IN IP[local_ip_type] [local_ip]
</span><br><span style="color: hsl(120, 100%, 40%);">+t=0 0
</span><br><span style="color: hsl(120, 100%, 40%);">+m=image 4389 udptl t38
</span><br><span style="color: hsl(120, 100%, 40%);">+a=T38FaxVersion:0
</span><br><span style="color: hsl(120, 100%, 40%);">+a=T38MaxBitRate:14400
</span><br><span style="color: hsl(120, 100%, 40%);">+a=T38FaxRateManagement:transferredTCF
</span><br><span style="color: hsl(120, 100%, 40%);">+a=T38FaxMaxDatagram:1400
</span><br><span style="color: hsl(120, 100%, 40%);">+a=T38FaxUdpEC:t38UDPRedundancy
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+]]>
</span><br><span style="color: hsl(120, 100%, 40%);">+</send>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="100" optional="true">
</span><br><span style="color: hsl(120, 100%, 40%);">+</recv>
</span><br><span style="color: hsl(120, 100%, 40%);">+  </span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="488" rrs="true">
</span><br><span style="color: hsl(120, 100%, 40%);">+</recv>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<send>
</span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+ACK [$1] SIP/2.0
</span><br><span style="color: hsl(120, 100%, 40%);">+Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_From]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_To]
</span><br><span style="color: hsl(120, 100%, 40%);">+CSeq: 1 ACK
</span><br><span style="color: hsl(120, 100%, 40%);">+Max-Forwards: 70
</span><br><span style="color: hsl(120, 100%, 40%);">+[routes]
</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: 0
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+]]>
</span><br><span style="color: hsl(120, 100%, 40%);">+</send>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<pause milliseconds="2000"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<send retrans="500">
</span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+INVITE [$1] SIP/2.0
</span><br><span style="color: hsl(120, 100%, 40%);">+Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]
</span><br><span style="color: hsl(120, 100%, 40%);">+From: [$3];tag=1
</span><br><span style="color: hsl(120, 100%, 40%);">+To: [$2]
</span><br><span style="color: hsl(120, 100%, 40%);">+CSeq: 2 INVITE
</span><br><span style="color: hsl(120, 100%, 40%);">+Contact: <sip:[local_ip]:[local_port]>
</span><br><span style="color: hsl(120, 100%, 40%);">+Max-Forwards: 70
</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Type: application/sdp
</span><br><span style="color: hsl(120, 100%, 40%);">+[routes]
</span><br><span style="color: hsl(120, 100%, 40%);">+Allow-Events: telephone-event
</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: [len] </span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+v=0
</span><br><span style="color: hsl(120, 100%, 40%);">+o=HuaweiSoftX3000 6644052 6644052 IN IP[local_ip_type] [local_ip]
</span><br><span style="color: hsl(120, 100%, 40%);">+s=Sip Call
</span><br><span style="color: hsl(120, 100%, 40%);">+c=IN IP[media_ip_type] [media_ip]
</span><br><span style="color: hsl(120, 100%, 40%);">+t=0 0
</span><br><span style="color: hsl(120, 100%, 40%);">+m=audio 8000 RTP/AVP 0 100 101
</span><br><span style="color: hsl(120, 100%, 40%);">+a=rtpmap:0 PCMU/8000
</span><br><span style="color: hsl(120, 100%, 40%);">+a=rtpmap:100 NSE/8000
</span><br><span style="color: hsl(120, 100%, 40%);">+a=rtpmap:101 telephone-event/101
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+]]>
</span><br><span style="color: hsl(120, 100%, 40%);">+</send>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="100" optional="true">
</span><br><span style="color: hsl(120, 100%, 40%);">+</recv>
</span><br><span style="color: hsl(120, 100%, 40%);">+  </span><br><span style="color: hsl(120, 100%, 40%);">+<recv response="200" rrs="true">
</span><br><span style="color: hsl(120, 100%, 40%);">+</recv>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<send>
</span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+ACK [$1] SIP/2.0
</span><br><span style="color: hsl(120, 100%, 40%);">+Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_From]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_To]
</span><br><span style="color: hsl(120, 100%, 40%);">+CSeq: 2 ACK
</span><br><span style="color: hsl(120, 100%, 40%);">+Max-Forwards: 70
</span><br><span style="color: hsl(120, 100%, 40%);">+[routes]
</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: 0
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+]]>
</span><br><span style="color: hsl(120, 100%, 40%);">+</send>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<!-- Play a pre-recorded PCAP file (RTP stream)                       -->
</span><br><span style="color: hsl(120, 100%, 40%);">+<nop>
</span><br><span style="color: hsl(120, 100%, 40%);">+    <action>
</span><br><span style="color: hsl(120, 100%, 40%);">+      <exec play_pcap_audio="./tests/channels/SIP/ASTERISK_T38_ENABLED_TWO_REINVITE_FROM_CUSTOMER/sipp/CUSTOMER_G711U.pcap"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+    </action>
</span><br><span style="color: hsl(120, 100%, 40%);">+</nop>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<recv request="BYE">
</span><br><span style="color: hsl(120, 100%, 40%);">+</recv>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<send>
</span><br><span style="color: hsl(120, 100%, 40%);">+<![CDATA[
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+SIP/2.0 200 OK
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Via:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_From:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_To:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_Call-ID:]
</span><br><span style="color: hsl(120, 100%, 40%);">+[last_CSeq:]
</span><br><span style="color: hsl(120, 100%, 40%);">+Contact: <sip:[local_ip]:[local_port];transport=[transport]>
</span><br><span style="color: hsl(120, 100%, 40%);">+Content-Length: 0
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+]]>
</span><br><span style="color: hsl(120, 100%, 40%);">+</send>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<!-- Keep the call open for a while in case the 200 is lost to be     -->
</span><br><span style="color: hsl(120, 100%, 40%);">+<!-- able to retransmit it if we receive the BYE again.               -->
</span><br><span style="color: hsl(120, 100%, 40%);">+<pause milliseconds="4000"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<!-- definition of the response time repartition table (unit is ms)   -->
</span><br><span style="color: hsl(120, 100%, 40%);">+<ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+<!-- definition of the call length repartition table (unit is ms)     -->
</span><br><span style="color: hsl(120, 100%, 40%);">+<CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span style="color: hsl(120, 100%, 40%);">+</scenario>
</span><br><span style="color: hsl(120, 100%, 40%);">+
</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_b_leg/sipp/CARRIER_G711U.pcap b/tests/t38_enabled_two_reinvite_on_b_leg/sipp/CARRIER_G711U.pcap</span><br><span>new file mode 100644</span><br><span>index 0000000..986a449</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_b_leg/sipp/CARRIER_G711U.pcap</span><br><span>Binary files differ</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_b_leg/sipp/CUSTOMER_G711U.pcap b/tests/t38_enabled_two_reinvite_on_b_leg/sipp/CUSTOMER_G711U.pcap</span><br><span>new file mode 100644</span><br><span>index 0000000..464426f</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_b_leg/sipp/CUSTOMER_G711U.pcap</span><br><span>Binary files differ</span><br><span>diff --git a/tests/t38_enabled_two_reinvite_on_b_leg/test-config.yaml b/tests/t38_enabled_two_reinvite_on_b_leg/test-config.yaml</span><br><span>new file mode 100644</span><br><span>index 0000000..abd9400</span><br><span>--- /dev/null</span><br><span>+++ b/tests/t38_enabled_two_reinvite_on_b_leg/test-config.yaml</span><br><span>@@ -0,0 +1,13 @@</span><br><span style="color: hsl(120, 100%, 40%);">+testinfo:</span><br><span style="color: hsl(120, 100%, 40%);">+    summary: 'Test that asterisk does not drop the call after it rejects the T38 reinvite from the carrier side because customer does not suport it and and continues to forward the audio packets after fallback to G711'</span><br><span style="color: hsl(120, 100%, 40%);">+    description: |</span><br><span style="color: hsl(120, 100%, 40%);">+        'Test that asterisk does not drop the call after it rejects the T38 reinvite from the carrier side because customer does not suport it and and continues to forward the audio packets after fallback to G711'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+properties:</span><br><span style="color: hsl(120, 100%, 40%);">+    minversion: '1.4'</span><br><span style="color: hsl(120, 100%, 40%);">+    dependencies:</span><br><span style="color: hsl(120, 100%, 40%);">+        - python : 'twisted'</span><br><span style="color: hsl(120, 100%, 40%);">+        - python : 'starpy'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    tags:</span><br><span style="color: hsl(120, 100%, 40%);">+        - SIP</span><br><span>diff --git a/tests/tests.yaml b/tests/tests.yaml</span><br><span>index fc5321a..c162f9b 100644</span><br><span>--- a/tests/tests.yaml</span><br><span>+++ b/tests/tests.yaml</span><br><span>@@ -37,3 +37,5 @@</span><br><span>     - test: 'remote-test'</span><br><span>     - dir: 'codecs'</span><br><span>     - dir: 'rtp'</span><br><span style="color: hsl(120, 100%, 40%);">+    - test: 't38_enabled_two_reinvite_on_a_leg'</span><br><span style="color: hsl(120, 100%, 40%);">+    - test: 't38_enabled_two_reinvite_on_b_leg'</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/c/testsuite/+/15231">change 15231</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/c/testsuite/+/15231"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: testsuite </div>
<div style="display:none"> Gerrit-Branch: 16 </div>
<div style="display:none"> Gerrit-Change-Id: I5d26b17c5c712a800c14264fd72da6e3564dee8a </div>
<div style="display:none"> Gerrit-Change-Number: 15231 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Robert Cripps <rcripps@voxbone.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>