Hello,

can you send me ngrep/pcap file with ip addresses so I can match which 200ok is causing the problem (coming from B or coming from Asterisk)? The backtrace shows ip while the sip trace is masked.

Also, I would need a bit more info from the core file. Please keep one around. The issue seems to be related to P-Asserted-Identity header, but I couldn't find any such header in the sip trace you sent.

Are you accounting the PAI header?

Thanks,
Daniel

On 03/10/2010 03:30 PM, Panagiotis Skoulikaritis wrote:
Dear Marius

The scenario is as follows:

1.  A Call is placed by a sip subscriber "A"
2.  kamailio forwards the call to the asterisk server
3.  Asterisk plays an IVR message on the subscriber "A", creates a new call to a "virtual" number which is forwarded to the kamailio server, and plays an ivr to this leg as well when the call is answered, then it connects the two calls.
4.  Kamailio translates the "virtual" number to the pstn number of subscriber B


I have attached a picture of the above scenario.

The modules that are loaded are:

loadmodule "db_mysql.so"
loadmodule "mi_fifo.so"
loadmodule "mi_datagram.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "pv.so"
loadmodule "maxfwd.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "textops.so"
loadmodule "uri_db.so"
loadmodule "siputils.so"
loadmodule "xlog.so"
loadmodule "acc.so"
loadmodule "dispatcher.so"
loadmodule "pdt.so"
loadmodule "dialplan.so"
loadmodule "siptrace.so"
loadmodule "dialog.so"
loadmodule "sqlops.so"
loadmodule "userblacklist.so"
loadmodule "htable.so"
loadmodule "uac.so"


The config that does all the routing is :

route[10] {

       xlog("alx ------- This is Route 10 -------");

       if($rU =~ "^.*%+")
       {
               xlog("alx ------- The number contains %23 ");
               $rU = $(rU{re.subst,/^(.*)%23(.*)/\1\2/});
               #$rU = $(rU{s.unescape.user}); #It changes the %23 to # !!
               xlog("alx ------- The perl  $rU ------- ");
       }

       if($rU =~ "^.*#+")
       {
               xlog("alx ------- The number contains #");
               $rU = $(rU{re.subst,/^(.*)#(.*)/\1\2/});
               #$rU = $(rU{s.unescape.user}); #It changes the %23 to # !!
               xlog("alx ------- The perl  $rU ------- ");
       }

       if(prefix2domain("2", "0")) {

               $var(dial_grp) = $(rd{s.select,0,.}{s.int}); # Dialplan group prefix for routing
               $var(num_pr) = $(rd{s.select,1,.}{s.int});  # The number of digits that prefix has
               $var(num_translation) = $(rd{s.select,2,.}{s.int});   # Called number translation
               $avp(s:port_translation) = $(rd{s.select,3,.}{s.int});   # Port number translation
               #$var(test_var) = $(rd{s.select,4,.}{s.int});   # Future property

               $avp(s:cust_prefix) = $(rU{s.substr,0,$var(num_pr)});
               $rU = $(rU{s.substr,$var(num_pr),0});

       xlog("alx ------- The new rU is $rU and properties $rd -------");

       if($var(num_translation) == 1)
       {
               if($sht(a=>$rU)!=null){

                     $rU = $sht(a=>$rU);
                     xlog("alx ------- Translation Done. DST num=$rU  ----------");

               } else {
                       xlog("alx ------- Translation NOT Done  ----------");
               }


                       #xlog("alx ------- We have DST number translation for user fU $avp(s:frm_user_name)  ----------");
                       #if(dp_translate("31", "$rU/$rU"))
                       #{
                       #        xlog("alx ------- Translation Done. DST num=$rU ----------");
                       #} else {
                       #        xlog("alx ------- Translation NOT Done ----------");
                       #}
       }

       if(dp_translate("$var(dial_grp)", "$rU/$rU"))
               {
                       xlog("alx ------- The $rU and with attributes :$avp(s:dest) -------\n");

                       $var(i) = 0;
                       while($(avp(s:dest){s.select,$var(i),.})!="#")
                       {
                               $avp(s:dstgrp) = $(avp(s:dest){s.select,$var(i),.}{s.int});
                               $var(i) = $var(i) + 1;
                               xlog("alx ------- The avp(s:dstgrp)=$avp(s:dstgrp) var(i)=$var(i) -------");
                       }

                       # backup the username so we can use different prefixes
                       $avp(s:user) = $rU;

                       # select destination from first group
                               if(ds_select_domain("$avp(s:dstgrp)", "4"))
                               {
                                       if($(ru{uri.param,prefix})!=null)
                                               {
                                                               $ru = "sip:" + $(ru{uri.param,prefix})  +  $avp(s:user) + "@" + $rd;

                                               } else {
                                                               $ru = "sip:" + $avp(s:user) + "@" + $rd;
                                               }
                               }

                               $avp(s:dstgrp) = null;
                                       xlog("alx ------- The final RURI is $ru ------- ");
                                       if($avp(s:port_translation) == 1)
                                       {
                                               rewriteport("5061");
                                       }
                                       t_on_failure("3");
                                       t_relay();
                                       exit;

               }




       }


}

Attached is the trace

Regards.

P.

marius zbihlei wrote:
Panagiotis Skoulikaritis wrote:
Hello Daniel

the kamailio version is 1.5.3

Regards

P.
Hello,

Can you give us more details like the sip message that generates the coredump (or if every sip message received generates the core), if your config does something more out of the ordinary(let's say exotic). Can we reproduce it ?

It would also be helpful if you specify the list of modules you have loaded.

Cheers,
Marius

Daniel-Constantin Mierla wrote:
Hello,
http://lists.openser-project.org/cgi-bin/mailman/listinfo/users

_______________________________________________ Kamailio (OpenSER) - Users mailing list Users@lists.kamailio.org http://lists.kamailio.org/cgi-bin/mailman/listinfo/users http://lists.openser-project.org/cgi-bin/mailman/listinfo/users

-- 
Daniel-Constantin Mierla
Kamailio SIP Router Masterclass, Berlin, March 22-26, 2010
* http://www.asipto.com/index.php/sip-router-masterclass/