[OpenSIPS-Users] Can not CANCEL the call
HUYNH Hoang Huy
huy.huynh at southtelecom.vn
Tue Aug 31 04:33:07 CEST 2010
Hello friends,
I have problem with CANCEL request because of t_check_trans() is always failed.
Here is my config file
# --- main routing logic
########################################################################
# Request route generic
########################################################################
route[0]
{
#Flood detection
if (!pike_check_req()) {
#xlog("L_INFO", ">>>>>> Flood detection \n - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci (R00-02)\n");
drop();
#sl_send_reply("403", "Forbidden");
exit;
}
xlog("L_INFO", "OPENSIPS: New request; M=$rm ; F=$fu ; T=$tu ; IP=$si ; ID=$ci\n");
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(is_method("SUBSCRIBE") || is_method("NOTIFY") || is_method("OPTIONS"))
{
drop();
};
#NAT detection
route(7);
if (!is_method("REGISTER"))
{
record_route();
};
if(is_method("CANCEL") || is_method("BYE"))
{
unforce_rtp_proxy();
#end_media_session();
}
if(loose_route())
{
if(!has_totag())
{
sl_send_reply("403", "Initial Loose-Routing Rejected");
exit;
}
}
if (is_method("REGISTER"))
{
route(2);
}
if(is_method("INVITE"))
{
route(3);
}
if(is_method("CANCEL") || is_method("ACK"))
{
route(6);
}
append_hf("P-hint: usrloc applied\r\n");
route(1);
}
########################################################################
# Request route generic
########################################################################
route[1]
{
if (subst_uri('/(sip:.*);nat=yes/\1/'))
{
setbflag(6);
};
if(isbflagset(6))
{
t_on_reply("1");
t_on_failure("2");
}
if (!t_relay("0x05"))
{
if ((is_method("INVITE") || is_method("BYE")) && isbflagset(6))
{
unforce_rtp_proxy();
#end_media_session();
};
sl_reply_error();
}
exit;
}
############################################`############################
# Request route 'REGISTER'
########################################################################
route[2]
{
sl_send_reply("100", "Trying");
if(!aaa_www_authorize("sip.worldfone.com.vn"))
{
xlog("L_INFO", "aaa_www_authorize failed, challenging M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci .. \n");
www_challenge("sip.worldfone.com.vn", "0");
exit;
}
if(!db_check_to())
{
sl_send_reply("401","Unauthorized");
exit;
}
consume_credentials();
if(!save("location"))
{
sl_reply_error();
exit;
}
exit;
}
########################################################################
# Request route 'INVITE'
########################################################################
route[3]
{
sl_send_reply("100", "Trying");
/* Don't authen if INVITE from these IPs */
if( ($si=="210.211.108.102")||($si=="222.255.236.131")||($si=="222.255.236.132") )
{
route(5);
route(1);
exit;
}
else
{
if(!aaa_proxy_authorize("sip.worldfone.com.vn"))
{
xlog("L_INFO", "aaa_proxy_authorize ; M=$rm ; F=$fu ; T=$tu ; IP=$si ; ID=$ci\n");
proxy_challenge("sip.worldfone.com.vn","0");
exit;
}
if (!db_check_from())
{
sl_send_reply("403","Forbidden");
exit;
}
consume_credentials();
route(4);
route(1);
exit;
};
}
########################################################################
# Request route 'invite-to-external/PC2Phone'
########################################################################
route[4]
{
if(isbflagset(6))
{
#force_rtp_proxy();
fix_nated_sdp("3");
#xlog("L_INFO", "*-*-* fix_nated_sdp *-*-*\n");
}
setbflag(11);
rewritehostport("210.211.108.102:5060");
append_hf("Service: PC2PHONE\r\n");
}
########################################################################
# Request route 'invite-to-internal'/PC2PC
########################################################################
route[5]
{
if(!lookup("location"))
{
sl_send_reply("404","User is offline");
exit;
}
else
{
xlog("L_INFO", "OPENSIPS: PC2PC found user\n");
#if(isbflagset(6))
#{
# force_rtp_proxy();
#}
append_hf("Service: PC2PC\r\n");
}
}
########################################################################
# Request route 'base-route-local'
########################################################################
route[6]
{
t_on_reply("2");
t_on_failure("2");
if(t_check_trans())
{
if(!t_relay())
{
xlog("L_INFO", "Reply error for CANCEL request - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
sl_reply_error();
}
}
else
{
xlog("L_INFO", "Dropping mis-routed request - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
}
exit;
}
########################################################################
# Fix NATed contact
########################################################################
route[7]
{
force_rport();
if (nat_uac_test("19"))
{
if (method=="REGISTER")
{
fix_nated_register();
}
else
{
fix_nated_contact();
};
setbflag(6);
};
}
########################################################################
# Check for failure cases from AVP
########################################################################
route[8]
{
avp_print();
switch($avp(s:h323-credit-time))
{
case "-100":
sl_send_reply("401","UnAuthorised");
break;
case "-101":
sl_send_reply("401","User not found");
break;
case "-102":
sl_send_reply("409","Conflict");
break;
case "-103":
sl_send_reply("402","Payment Required");
break;
case "-104":
sl_send_reply("407","User not active");
break;
case "-105":
sl_send_reply("604","Does not match dial plan");
break;
case "-107":
sl_send_reply("604","Dial plan is diable");
break;
case "-108":
sl_send_reply("484","Address Incomplete");
break;
default:
sl_send_reply("403","UnAuthorised");
}
}
########################################################################
# Failure route
########################################################################
failure_route[2]
{
if(isbflagset(6))
{
unforce_rtp_proxy();
}
}
########################################################################
# Reply route generic
########################################################################
onreply_route[1]
{
if ((isbflagset(6) || isbflagset(3)) && status=~"183||(2[0-9][0-9])")
{
if(!search("^Content-Length:[ ]*0"))
{
if(isbflagset(11))
{
fix_nated_sdp("3");
#force_rtp_proxy();
}
else
{
force_rtp_proxy();
}
}
}
search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes');
if (isbflagset(6))
{
fix_nated_contact();
}
if (status=~"180||183||(2[0-9][0-9])")
{
# Add AVP into headers
#route(10);
}
exit;
}
########################################################################
# Reply route 'base-standard-reply'
########################################################################
onreply_route[2]
{
xlog("L_INFO", "Reply - S=$rs D=$rr F=$fu T=$tu IP=$si ID=$ci (RR1-01)\n");
exit;
}
I take long time for this but can not find out where is problem.
Please everyone help me solve where is problem and how to fix it.
Best regards,
Thank you,
Huy Huynh (Mr.)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.opensips.org/pipermail/users/attachments/20100831/dd38b5ba/attachment-0001.htm
More information about the Users
mailing list