[SR-Users] S-CSCF strange execution effects

Flavio Battimo flaviobattimo at gmail.com
Wed Dec 11 17:49:53 CET 2013


Hello,

i'm encountering in some strange behaviours while working with S-CSCF
version: kamailio 4.1.0 (x86_64/linux) 350d2e

Making some tests, in particular with Ro interface for online
charging, the script execution doesn't follow normal flow (checking it
by adding some xlog call).

Looking at the following code script, i have made some modifications:
1) Modify the P-Asserted-Identity so as to add angle brackets to the value.
2) Add user=phone parameter to uri if it doesn't exists
3) Enabled RO interface for accounting

The amazing thing is that if kamailio is executed with this script the
whole flow terminates without any notice just after record_route()
call. Making some attempts, removing record_route() call flow
continues until Ro_CCR method, where same behaviour appears (call flow
is unpredictable terminated and no diameter CCR request is made)

Which kind of operations can lead to this strange behaviour

If is needed i can attach some logs in debug level mode

Thanks in advance


######################################################################
# Originating, Intial Requests
######################################################################
route[orig]
{
xlog("L_DBG","Enter orig route\n");
# modifica di P-Asserted-Identity
subst('/P\-Asserted\-Identity:[
]*([\+0-9a-z@\.\-\:]*)/P-Asserted-Identity: <\1>\r\n/ig');
if ($ru =~ ".*;user=phone.*" ){
xlog("L_DBG","Parameter user=phone already exists");
} else {
xlog("L_DBG","Adding parameter user=phone");
$ru = $ru + ";user=phone";
}
    xlog("L_DBG","$rm $ru");
set_dlg_profile("orig");

# we MAYBE need something like this to check if a user is barred
# if (S_originating_barred()){
# sl_send_reply("403","Forbidden - Originating Public Identity barred");
# exit;
# }
xlog("L_DBG","Checking AVP mo custom\n");
  if (is_method("INVITE|SUBSCRIBE")) {
  xlog("L_DBG","Adding AVP mo custom parameter\n");
  $avp(RR_CUSTOM_USER_AVP)="mo";
xlog("L_DBG","call record_route\n");
         record_route();
     }

#!ifdef WITH_RO
# before we allow call - lets check credit
xlog("L_DBG","Checking if RO must be called\n");
if (is_method("INVITE")) {
xlog("L_DBG","Sending initial CCR Request for call\n");
Ro_CCR("CHARGING_CCR_REPLY", "orig", "SCUR", "", "30");
}
#!else
xlog("L_DBG","calling route[finalize_orig]");
  route(Finalize_Orig);
#!endif

}







-- 
Flavio Battimo
flavio.battimo at gmail.com
fbattimo at meetecho.com
skype: flaviobattimo



More information about the sr-users mailing list