[OpenSER-Users] call forking

Christian Schlatter cs at unc.edu
Wed Aug 22 03:28:32 CEST 2007


Bernard,

Your config looks ok to me. Something rather weird must happen with the 
call signaling if users C and D receive the calls 15 secs after dialing 
user B. A tcpdump trace would help to debug this problem. Can you run

% tcpdump -i any -s 1500 -w /tmp/sip.pcap

on the proxy host and post the sip.pcap file.

/Christian

bernard.le at orange-ftgroup.com wrote:
> Hi
> 
> I'm trying to do some call forking but I can't manage to make it work well.
> I explain quickly what it is :
> If user A call user B and user B is registered more than once (on different
> system), the proxy will fork natively to all registered user B.
> 
> What I want to do now is if user A call user B then the proxy fork to user
> C, user D and so on.
> I have found the command append_branch("sip:userC at domain 
> <http://openser.org/cgi-bin/mailman/listinfo/users>").
> 
> The thing is that it is not working well.
> For the first time (when the server restart), I make a call from user A,
> only user B receive the call, then ignored the call from the user B and
> wait for about 15sec then the call ring on user C and D.
> I make the 2nd try, user A call B, B, C & D receive the ring.
> Then I wait some minute, the problem came back again
> 
> what is wrong with the first call, a bug or configuration error ?
> 
> please help
> Bernard
> 
> here is my config file :
> # ----------- global configuration parameters ------------------------
> debug=3            # debug level (cmd line: -dddddddddd)
> fork=yes
> log_stderror=no    # (cmd line: -E)
> children=4
> 
> listen=192.168.17.107
> port=5060
> # ------------------ module loading ----------------------------------
> #set module path
> mpath="/usr/local/lib/openser/modules/"
> 
> loadmodule "mysql.so"
> loadmodule "auth.so"
> loadmodule "auth_db.so"
> loadmodule "sl.so"
> loadmodule "tm.so"
> loadmodule "rr.so"
> loadmodule "maxfwd.so
> loadmodule "usrloc.so"
> loadmodule "registrar.so"
> loadmodule "textops.so"
> loadmodule "mi_fifo.so"
> # ----------------- setting module-specific parameters ---------------
> modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")
> modparam("usrloc", "db_mode", 3)
> modparam("auth_db", "calculate_ha1", yes)
> modparam("auth_db", "password_column", "password")
> modparam("rr", "enable_full_lr", 1)
> # -------------------------  request routing logic -------------------
> # main routing logic
> route{
>       if (!mf_process_maxfwd_header("10"))
>       {
>             sl_send_reply("483","Too Many Hops");
>             exit;
>       };
> 
>       if (msg:len >=  2048 )
>       {
>             sl_send_reply("513", "Message too big");
>             exit;
>       };
> 
>       if (!method=="REGISTER")
>             record_route();
> 
>       if (loose_route())
>       {
>             # mark routing logic in request
>             append_hf("P-hint: rr-enforced\r\n");
>             route(1);
>       };
> 
>       if (!uri==myself)
>       {
>             # mark routing logic in request
>             append_hf("P-hint: outbound\r\n");
>             route(1);
>       };
> 
>       if (uri==myself)
>       {
>             if (method=="REGISTER")
>             {
>                   route(2);
>             };
> 
>             if (method=="INVITE")
>             {
>                   route(3);
>             };
> 
>             lookup("aliases");
>             if (!uri==myself)
>             {
>                   append_hf("P-hint: outbound alias\r\n");
>                   route(1);
>             };
> 
>             if (!lookup("location"))
>             {
>                   sl_send_reply("404", "User not found");
>                   exit;
>             };
>             append_hf("P-hint: usrloc applied\r\n");
>       };
> 
>       route(1);
> }
> 
> 
> route[1]
> {
>       if (!t_relay())
>       {
>             sl_reply_error();
>       };
>       exit;
> }
> 
> route[2]
> {
>       if (!www_authorize("etraliSIP.fr", "subscriber"))
>       {
>             www_challenge("etraliSIP.fr", "1");
>             exit;
>       };
>       save("location");
>       exit;
> }
> 
> route[3]
> {
>       if (!proxy_authorize("etraliSIP.fr", "subscriber"))
>       {
>             proxy_challenge("etraliSIP.fr", "1");
>             exit;
>       };
>       if (from_uri=="sip:leb at etraliSIP 
> <http://openser.org/cgi-bin/mailman/listinfo/users>" && 
> to_uri=="sip:patrice at etraliSIP 
> <http://openser.org/cgi-bin/mailman/listinfo/users>"
> && !search("P-hint: ok call forking"))
>       {
>             append_hf("P-hint: ok call forking\r\n");
>             append_branch("sip:test at etraliSIP 
> <http://openser.org/cgi-bin/mailman/listinfo/users>");
>             append_branch("sip:tony at etraliSIP 
> <http://openser.org/cgi-bin/mailman/listinfo/users>");
>       };
> }
> 
> 
> =
> 
> 
> ------------------------------------------------------------------------
> 
> *********************************
> This message and any attachments (the "message") are confidential and intended solely for the addressees. 
> Any unauthorised use or dissemination is prohibited.
> Messages are susceptible to alteration. 
> France Telecom Group shall not be liable for the message if altered, changed or falsified.
> If you are not the intended addressee of this message, please cancel it immediately and inform the sender.
> ********************************
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Users mailing list
> Users at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/users





More information about the Users mailing list