diff options
author | Benny Prijono <bennylp@teluu.com> | 2009-04-27 12:50:16 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2009-04-27 12:50:16 +0000 |
commit | 2a3362d1b960f0533552b8cfba0c6a4fff4ba147 (patch) | |
tree | e1096efb824638ad6c1b260fc54993916083566b /tests/pjsua | |
parent | 1df6ac0c66b44fa792ef8e0f2a9aa3e45c4971f2 (diff) |
Ticket #798: UAC disconnect call when receiving BYE in early state (thanks Gang Liu for the suggestion)
- UAC now handles the BYE, and treat it as out-of-order disconnect request, meaning that it will disconnect the call
- it will also activate timer to terminate the INVITE transaction, in case final response never arrives
- added SIPp UAS scenario to test this
- also added forked 200/OK response SIPp scenario,
- and fixed the prack_fork.xml SIPp scenario
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2650 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'tests/pjsua')
-rw-r--r-- | tests/pjsua/scripts-sipp/prack_fork.xml | 2 | ||||
-rw-r--r-- | tests/pjsua/scripts-sipp/uas-early-bye.xml | 68 | ||||
-rw-r--r-- | tests/pjsua/scripts-sipp/uas-forked-200.xml | 143 |
3 files changed, 212 insertions, 1 deletions
diff --git a/tests/pjsua/scripts-sipp/prack_fork.xml b/tests/pjsua/scripts-sipp/prack_fork.xml index 71690533..6caf3220 100644 --- a/tests/pjsua/scripts-sipp/prack_fork.xml +++ b/tests/pjsua/scripts-sipp/prack_fork.xml @@ -93,7 +93,7 @@ <send retrans="500">
<![CDATA[
SIP/2.0 200 OK
- Via: SIP/2.0/UDP [remote_ip]:[remote_port];rport=[remote_port];[$3]
+ Via: SIP/2.0/UDP 127.0.0.1:5080;received=127.0.0.1;rport=5080;[$3]
[last_From:]
[last_To:];tag=2
[last_Call-ID:]
diff --git a/tests/pjsua/scripts-sipp/uas-early-bye.xml b/tests/pjsua/scripts-sipp/uas-early-bye.xml new file mode 100644 index 00000000..216b8b45 --- /dev/null +++ b/tests/pjsua/scripts-sipp/uas-early-bye.xml @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<!DOCTYPE scenario SYSTEM "sipp.dtd"> + +<scenario name="Early BYE"> + <recv request="INVITE" crlf="true"> + <action> + <ereg regexp=".*" search_in="hdr" header="From" assign_to="3"/> + <ereg regexp="sip:(.*)>" search_in="hdr" header="Contact" assign_to="4,5"/> + <assign assign_to="4" variable="5" /> + </action> + </recv> + + <send> + <![CDATA[ + SIP/2.0 100 Trying + [last_Via:] + [last_From:] + [last_To:] + [last_Call-ID:] + [last_CSeq:] + Content-Length: 0 + + ]]> + </send> + + <send> + <![CDATA[ + + SIP/2.0 180 Ringing + [last_Via:] + [last_From:] + [last_To:];tag=[call_number] + [last_Call-ID:] + [last_CSeq:] + Contact: sip:sipp@[local_ip]:[local_port] + Content-Length: 0 + + ]]> + </send> + + <send retrans="500"> + <![CDATA[ + + BYE sip:[$5] SIP/2.0 + Via: SIP/2.0/[transport] [local_ip]:[local_port] + From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[call_number] + To[$3] + Call-ID: [call_id] + Cseq: 1 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Content-Length: 0 + + ]]> + </send> + + <recv response="200"> + </recv> + + + <!-- definition of the response time repartition table (unit is ms) --> + <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/> + + <!-- definition of the call length repartition table (unit is ms) --> + <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/> + +</scenario> + diff --git a/tests/pjsua/scripts-sipp/uas-forked-200.xml b/tests/pjsua/scripts-sipp/uas-forked-200.xml new file mode 100644 index 00000000..229f7d89 --- /dev/null +++ b/tests/pjsua/scripts-sipp/uas-forked-200.xml @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<!DOCTYPE scenario SYSTEM "sipp.dtd"> + +<!-- This program is free software; you can redistribute it and/or --> +<!-- modify it under the terms of the GNU General Public License as --> +<!-- published by the Free Software Foundation; either version 2 of the --> +<!-- License, or (at your option) any later version. --> +<!-- --> +<!-- This program is distributed in the hope that it will be useful, --> +<!-- but WITHOUT ANY WARRANTY; without even the implied warranty of --> +<!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --> +<!-- GNU General Public License for more details. --> +<!-- --> +<!-- You should have received a copy of the GNU General Public License --> +<!-- along with this program; if not, write to the --> +<!-- Free Software Foundation, Inc., --> +<!-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --> +<!-- --> +<!-- Sipp default 'uas' scenario. --> +<!-- --> + +<scenario name="Forked INVITE, one of them require PRACK"> + <recv request="INVITE" crlf="true"> + <action> + <ereg regexp="branch=([0-9a-zA-Z]*)" + search_in="hdr" + header="Via" + assign_to="1,2"/> + <assign assign_to="1" variable="2"/> + </action> + </recv> + + <send> + <![CDATA[ + SIP/2.0 100 Trying + [last_Via:] + [last_From:] + [last_To:];tag=[call_number] + [last_Call-ID:] + [last_CSeq:] + ]]> + </send> + + <!-- Call leg 1: 200/OK --> + <send> + <![CDATA[ + SIP/2.0 200 OK + Via: SIP/2.0/UDP 127.0.0.1;received=127.0.0.1;rport=5080;branch=[$2] + [last_From:] + [last_To:];tag=UA_1 + [last_Call-ID:] + [last_CSeq:] + Contact: <sip:UA_1@[local_ip]:[local_port]> + Content-Type: application/sdp + + v=0 + o=- 3442013205 3442013205 IN IP4 192.168.0.13 + s=pjsip + c=IN IP4 192.168.0.13 + t=0 0 + m=audio 4002 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + ]]> + </send> + + <!-- Call leg 2: 200/OK --> + <send> + <![CDATA[ + SIP/2.0 200 OK + Via: SIP/2.0/UDP 127.0.0.1;received=127.0.0.1;rport=5080;branch=[$2] + [last_From:] + [last_To:];tag=UA_2 + [last_Call-ID:] + [last_CSeq:] + Contact: <sip:UA_2@[local_ip]:[local_port]> + Content-Type: application/sdp + + v=0 + o=- 3442013205 3442013205 IN IP4 192.168.0.13 + s=pjsip + c=IN IP4 192.168.0.13 + t=0 0 + m=audio 4002 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + ]]> + </send> + + <!-- Receive ACK --> + <recv request="ACK" + optional="false" + rtd="true" + crlf="true"> + </recv> + + <!-- Receive BYE --> + <recv request="BYE" crlf="true"> + </recv> + + <!-- Send 200/OK to BYE --> + <send> + <![CDATA[ + SIP/2.0 200 OK + [last_Via:] + [last_From:] + [last_To:] + [last_Call-ID:] + [last_CSeq:] + ]]> + </send> + + + + <!-- Receive ACK --> + <recv request="ACK" + optional="false" + rtd="true" + crlf="true"> + </recv> + + <!-- Receive BYE --> + <recv request="BYE" crlf="true"> + </recv> + + <!-- Send 200/OK to BYE --> + <send> + <![CDATA[ + SIP/2.0 200 OK + [last_Via:] + [last_From:] + [last_To:] + [last_Call-ID:] + [last_CSeq:] + ]]> + </send> + + <!-- definition of the response time repartition table (unit is ms) --> + <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/> + + <!-- definition of the call length repartition table (unit is ms) --> + <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/> + +</scenario> + |