Yes - I had forgotten about ooc.  

-oocsf, -oocsn etc  work fine so long as you only want one simultaneous 
incoming call, but do not appear to support multiple simultaneous instances of 
the ooc scenario. 

e.g. the following will cause havoc if you try to handle it with -ooc, as your 
script will be waiting for 'BYE' and will instead be passed the INVITE for the 
new call.

-> INVITE (call1) 
<- Trying
<- Ok

-> INVITE (call2)

...

-> BYE (call1)


...

-> BYE (call2)


The same problem occurs if an OPTIONS is received mid-call when using -ooc, 
forcing you to put OPTIONS handling code in your ooc xml script at all stages.


I was tempted to modify this behaviour for the ooc scenarios (register a new 
-ooc scenario for each new incoming call_id, rather than the current behaviour 
where a single ooc scenario instance handles all unknown call_ids) but I was 
afraid that might break other people's scripts if the changes were ever 
integrated into SIPP - hence I added new parameters instead.  

Using my patch,  in the above example one instance of the rx scenario is 
created when the 1st invite is received, and handles only incoming messages 
with call_id's that match the 1st INVITE.  When the 2nd INVITE is received, a 
new instance of the rx scenario is created and starts handling the seconds call 
from the beginning. Liekwsie an OPTIONS would create a new instanc eof the 
scenario, meaning you only need to check for INVITE vs OPTIONS at the first 
step of your rx scenario script, not throughout.



Matt


________________________________________
From: Steve Edwards [steve.m.edwa...@ntlworld.com]
Sent: Wednesday, 7 March 2012 7:58 a.m.
To: Matthew Briggs
Cc: sipp-users@lists.sourceforge.net
Subject: Re: [Sipp-users] Registration for a server

Hi Matt

Thank you for your very considered reply.

It's not in the user guide, but -oocsf and -oocsn allow you to load an Out
Of Call scenario XML file.  So I am having some success in running a
registration as a client, and either -oocsn uas which loads the built-in uas
scenario, or my own similar server script -oocsn uas.xml.

This does seem to be something of a weakness in SIPp though, and threatens
to limit its usefulness.  :-(

I will have a look 5645.

Thank you again for taking the time and trouble to reply, I do appreciate
it, and I must admit I hadn't thought of using two instances as you
describe.

Kind regards,
Steve

----- Original Message -----
From: "Matthew Briggs" <matthew.bri...@telecom.co.nz>
To: "Steve Edwards" <steve.m.edwa...@ntlworld.com>;
<sipp-users@lists.sourceforge.net>
Sent: Tuesday, March 06, 2012 6:27 PM
Subject: RE: [Sipp-users] Registration for a server


_______________________________________
From: Steve Edwards [steve.m.edwa...@ntlworld.com]
Sent: Tuesday, 6 March 2012 11:30 p.m.
To: sipp-users@lists.sourceforge.net
Subject: [Sipp-users] Registration for a server

Hi

Sorry if this is a dumb question, but I want to run SIPp with a scenario
that registers (including authentication), and then behaves as a server to
receive incoming calls.

    REGISTER    -------->
    <--------- 401 auth="true"
    REGISTER    -------->
    <---------- 200


    <----------  INVITE

        etc

It registers OK, but then when it receives an INVITE, it discards this an
unexpected message because the tags don't match those used in the
registration.

Any help would be much appreciated.

Kind regards,
Steve Edwards


===

Steve,

I had the same problem.  Scripts are either UAC or UAS.  But when there are
registrations ot handle you need a combination of the two: one that assigns
it's own call_id (UAC) to register, and one that receives the call_id from
the far end with the initiating message to terminate an incoming call.

My interim solution was to wrap the whole thing in a shell script:

#!/bin/bash
sipp 1.2.3.4:5060 -sf register.xml -inf mynumber.csv -l 1 - m 1 -p 5060
sipp 1.2.3.4:5060 -sf called_party.xml -inf mynumber.csv -l 1 -m 1 -p 5060


to run the two scripts in series.

This is fine except for 2 scenarios:

1) if you have a short registration timeout

In my case I had to reregister every minute, so this only gave me 1 minute
to run my called_party script before the registration expired

2) If you use SIP over TCP

I also had to test SIP over TCP support against a broadsoft platform.
Broadsoft deregister the endpoint as soon as they receive the FIN for the
TCP session used to register - so the above solution does not work since the
TCP session is torn down as soon as the register script finishes.

3) If you / the SBC / the proxy need to send OPTIONS pings as keepalives.

You can use -aa to answer these, but sending them is difficult in the above
scenario


There are scripting acrobatics that can fudge the 1st / 3rd scenarios
above - sticking reregisters and options through your called_party script to
keep registration alive, for example.

However, the better solution seemed to be to modify SIPP to allow two
scripts/scenarios to run concurrently - one handling registration and one
terminating calls.  Which is what I did in the end.  See post: 5645 for the
patches and for details. (Re: [Sipp-users] New feature / solution: Enabling
a mixture of server-mode and client mode operation simultaneously)

Matt=


------------------------------------------------------------------------------
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
_______________________________________________
Sipp-users mailing list
Sipp-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sipp-users

Reply via email to