[OpenSIPS-Users] Can you drop a 487 Request Terminated?
discodog62 at aol.com
discodog62 at aol.com
Thu Mar 1 07:33:41 CET 2012
When I setup a call then cancel the call I am getting a 487 from my gateway that is relayed to the client.
I don't wish to show the 487 to the client. Is it possible to drop the reply for the 487?
I am hoping someone could let me know if this is possible.
I am running opensips 1.7 Here is a copy of my config as well.
debug=4
log_stderror=no
log_facility=LOG_LOCAL0
fork=yes
children=4
disable_tcp=yes
auto_aliases=yes
sip_warning=yes
listen=udp:10.8.1.139:5060
group=nobody
user=nobody
server_header="ZZZ"
server_signature = off
user_agent_header="User-Agent: ZZZ"
####### Modules Section ########
#set module path
mpath="/usr/local/lib64/opensips/modules/"
loadmodule "db_text.so"
loadmodule "signaling.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "maxfwd.so"
loadmodule "textops.so"
loadmodule "mi_fifo.so"
loadmodule "uri.so"
loadmodule "domain.so"
loadmodule "permissions.so"
loadmodule "userblacklist.so"
loadmodule "dialog.so"
modparam("domain|userblacklist|dialog|permissions", "db_url","text:///zxa/server/opensipsDNC")
modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
modparam("rr", "append_fromtag", 0)
modparam("uri", "use_uri_table", 0)
modparam("domain", "db_mode", 1) # Use caching
####### Routing Logic ########
# main request routing logic
route{
xlog("=== TOP ===");
xlog("%%%% tu= $tu | fu= $fu | od= $od | ReceivedINT: $Ri | SourceIP: $si %%%");
if ( $si == "10.8.1.139") && ( $Ri == "10.8.1.139")
{
exit;
}
if (!check_address("1","$si","$sp","$proto"))
{
xlog("=== ACCESS FAILED ===");
xlog("=== $si| $sp | $proto ===");
sl_send_reply("403","Forbidden");
exit;
}
if (!mf_process_maxfwd_header("10"))
{
xlog("=== TOO MANY HOPS ===");
sl_send_reply("483","Too Many Hops");
exit;
}
#CANCEL processing
if (is_method("CANCEL"))
{
xlog("=== CANCEL 76 ===");
if (t_check_trans())
t_relay();
exit;
}
if (is_method("PUBLISH"))
{
sl_send_reply("503", "Service Unavailable");
exit;
}
if (has_totag())
{
xlog("=== HAS TO TAG ===");
if (loose_route())
{
xlog("=== HAS LOOSE ===");
if (is_method("BYE"))
{
xlog("=== LOOSE BYE ===");
route(3);
exit;
} else if (is_method("INVITE")) {
xlog("=== RE-INVITE LOOSE ===");
record_route();
}
xlog("In loouse going to Route 1");
route(1);
} else {
if ( is_method("ACK") )
{
xlog("=== LOOSE ELSE ACK ===");
if ( t_check_trans() )
{
t_relay();
exit;
} else {
xlog("=== LOOSE Discard ACK ===");
exit;
}
}
sl_send_reply("404","Not here");
}
exit;
}
t_check_trans();
if (loose_route())
{
xlog("L_ERR","Attempt to route with preloaded Route's [$fu/$tu/$ru/$ci]");
if (!is_method("ACK"))
{
sl_send_reply("403","Preload Route denied");
exit;
}
}
# record routing
if (!is_method("REGISTER|MESSAGE"))
{
record_route();
}
if (!is_uri_host_local())
{
xlog("Not local so lets just see what happens $rd");
route(1);
}
if ($rU==NULL)
{
# request with no Username in RURI
sl_send_reply("484","Address Incomplete");
exit;
}
if (is_method("INVITE") && (!has_totag()) )
{
xlog("|||||| NEW CALL ||||||");
}
route(2);
send_reply("420", "Invalid Extension");
exit;
}
route[1] {
#---- RTP Proxy handling ---#
xlog("=== ROUTE 1 ===");
rewritehostport("10.8.1.44:5060");
if (is_method("INVITE")) {
t_on_reply("1");
t_on_failure("1");
}
if (!t_relay())
{
sl_reply_error();
}
exit;
}
route[2] {
xlog("=== ROUTE 2 ===");
if (!check_blacklist("userblacklist"))
{
xlog('~~~ BLACKLISTED DID Forbidden ~~~');
sl_send_reply("403", "DID Forbidden");
exit;
}
route(1);
}
route[3] {
xlog("=== ROUTE 3 ===");
t_on_reply("1");
t_on_failure("1");
t_relay("udp:10.8.1.44:5060");
}
branch_route[1] {
xlog("new branch at $ru\n");
}
onreply_route[1] {
xlog("=== ON REPLY ROUTE 2 rs= $rs | fu= $fu | si= $si | Ri= $Ri ===");
if (t_check_status("487"))
{
xlog("487 at reply route");
t_cancel_branch();
drop;
}
}
failure_route[1] {
xlog("=== FAIL ROUTE ===");
xlog("=== FAIL ROUTE 2 fu= $fu | od= $od | si= $si | Ri= $Ri ===");
if (t_was_cancelled())
{
exit;
}
}
Here is a call flow that I have a question about. Sorry if this is over kill.
| 10.6.3.87 |10.8.1.139 | 10.8.1.44 |
| | |
| Request: INVITE sip | |SIP/SDP: Request: INVITE
|(5068) ------------------> (5060) | |
| Status: 100 Giving | |SIP: Status: 100 Giving a try
|(5068) <------------------ (5060) | |
| | Request: INVITE sip |SIP/SDP: Request: INVITE
| |(5060) ------------------> (5060) |
| | Status: 100 Trying |SIP: Status: 100 Trying
| |(5060) <------------------ (5060) |
| | Status: 180 Ringing |SIP: Status: 180 Ringing
| |(5060) <------------------ (5060) |
| Status: 180 Ringing | |SIP: Status: 180 Ringing
|(5068) <------------------ (5060) | |
| Request: CANCEL sip | |SIP: Request: CANCEL
|(5068) ------------------> (5060) | |
| Status: 200 canceli | |SIP: Status: 200 canceling
|(5068) <------------------ (5060) | |
| | Request: CANCEL sip |SIP: Request: CANCEL
| |(5060) ------------------> (5060) |
| Request: ACK sip:18 | |SIP: Request: ACK
|(5068) ------------------> (5060) | |
| Request: BYE sip:18 | |SIP: Request: BYE
|(5068) ------------------> (5060) | |
| | Request: BYE sip:10 |SIP: Request: BYE
| |(5060) ------------------> (5060) |
| | Status: 200 OK |SIP: Status: 200 OK
| |(5060) <------------------ (5060) |
| | Status: 487 Request |SIP: Status: 487 Request Terminated
| |(5060) <------------------ (5060) |
| | Request: ACK sip:18 |SIP: Request: ACK
| |(5060) ------------------> (5060) |
| Status: 487 Request | |SIP: Status: 487 Request Terminated
|(5068) <------------------ (5060) | |
| Request: ACK sip:18 | |SIP: Request: ACK
|(5068) ------------------> (5060) | |
| | Status: 200 OK |SIP: Status: 200 OK
| |(5060) <------------------ (5060) |
| Status: 200 OK | |SIP: Status: 200 OK
|(5068) <------------------ (5060) | |
Thanks,
James
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20120301/2e4b18ad/attachment-0001.htm>
More information about the Users
mailing list