<?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 --> <!-- --> <!-- Late NOTIFY scenario: --> <!-- - UAC sends SUBSCRIBE, we reply with 200 --> <!-- - we send NOTIFY, expect 200 --> <!-- - UAC sends SUBSCRIBE, we ignore --> <!-- - we send NOTIFY --> <!-- See https://github.com/pjsip/pjproject/issues/911 --> <!-- --> <scenario name="Late NOTIFY"> <!-- By adding rrs="true" (Record Route Sets), the route sets --> <!-- are saved and used for following messages sent. Useful to test --> <!-- against stateful SIP proxies/B2BUAs. --> <recv request="SUBSCRIBE" 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> <!-- The '[last_*]' keyword is replaced automatically by the --> <!-- specified header if it was present in the last message received --> <!-- (except if it was a retransmission). If the header was not --> <!-- present or if no message has been received, the '[last_*]' --> <!-- keyword is discarded, and all bytes until the end of the line --> <!-- are also discarded. --> <!-- --> <!-- If the specified header was present several times in the --> <!-- message, all occurences are concatenated (CRLF seperated) --> <!-- to be used in place of the '[last_*]' keyword. --> <send> <![CDATA[ SIP/2.0 200 OK [last_Via:] [last_From:] [last_To:];tag=[call_number] [last_Call-ID:] [last_CSeq:] Contact: <sip:sipp@[local_ip]:[local_port]> Content-Length: 0 Expires: 60 ]]> </send> <send retrans="500"> <![CDATA[ NOTIFY sip:[$5] SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port];rport;branch=z9hG4bKPj01 From: sipp <sip:sipp@[local_ip]>;tag=[call_number] To[$3] Call-ID: [call_id] Cseq: 1 NOTIFY Contact: sip:sipp@[local_ip]:[local_port] Max-Forwards: 70 Event: presence Subscription-State: active;expires=10 Content-Type: application/pidf+xml <?xml version="1.0" encoding="UTF-8"?> <presence xmlns="urn:ietf:params:xml:ns:pidf" xmlns:op="urn:oma:xml:prs:pidf:oma-pres" entity="sip:moto_red@ptt.intra.genaker.net"> <tuple id="17415d5738f332a64a2f1d8cfb4ab0a5"> <status> <basic>open</basic> </status> <op:willingness> <op:basic>closed</op:basic> </op:willingness> <op:barring-state>active</op:barring-state> <op:service-description> <op:service-id>org.openmobilealliance:PoC-session</op:service-id> <op:version>1.0</op:version> </op:service-description> </tuple> </presence> ]]> </send> <recv response="200"> </recv> <recv request="SUBSCRIBE" crlf="true"> </recv> <!-- UAC sends SUBSCRIBE, we do nothing --> <send> <![CDATA[ SIP/2.0 408 Timeout Bo [last_Via:] [last_From:] [last_To:];tag=[call_number] [last_Call-ID:] [last_CSeq:] Contact: <sip:sipp@[local_ip]:[local_port]> Content-Length: 0 Expires: 60 ]]> </send> <!-- <pause milliseconds="32070"/> --> <!-- Now send late NOTIFY --> <send retrans="500"> <![CDATA[ NOTIFY sip:[$5] SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port];rport;branch=z9hG4bKPj02 From: sipp <sip:sipp@[local_ip]>;tag=[call_number] To[$3] Call-ID: [call_id] Cseq: 2 NOTIFY Contact: sip:sipp@[local_ip]:[local_port] Max-Forwards: 70 Event: presence Subscription-State: terminated;reason=timeout Content-Length: 0 ]]> </send> <recv response="481"> </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>