Hi,
not sure how is generating this, but it's not a valid SIP URI:
<: 17322180369@myserver-ipaddress :5090>
regards,
bogdan
modparam("uac","credential","99999:provider.com:99999")
# ------------------------- request routing logic -------------------
route {
#check for old messages: could mean a problem withthe DNS entries or some other loop-causer...
if (!mf_process_maxfwd_header("10"))
{
xlog("L_WARN", "WARNING: Too many hops\n");
sl_send_reply("483", "Too many hops, forward count exceeded limit\n");
return;
};
#check for extremely large messages; we don't need a sip dos attack
if (msg:len >= 2048)
{
xlog("L_WARN", "WARNING: Message too large, >= 2048 bytes\n");
sl_send_reply("513", "Message too large, exceeded limit\n");
return;
};
#record everything besides registers and acks
if(method!="REGISTER" && method!="ACK")
{
setflag(1);
};
#do not send to voicemail if BYE or CANCEL
#is used to end call before user pickup or timeout
if(method=="CANCEL" || method=="BYE")
{
setflag(10);
};
#grant route if route headers already present
if (loose_route())
{
route(1);
return;
};
#Always require authentication, which could result in a PSTN, ie $$$
if (method=="REGISTER")
{
if(!www_authorize("mydomain.com", "subscriber"))
{
www_challenge("mydomain.com
", "0");
return;
}
else
{
if (!check_to())
{
sl_send_reply("401", "Unauthorized");
return;
};
#Save into user database, used below when checkingif user is available
xlog("L_INFO", "REGISTER: User Authenticated Correctly\n");
save("location");
return;
};
};
#}
if (method=="INVITE")
{
if(uri=~"sip:\*98@.*")
#if(uri=~"sip:\*86@.*")
{
#authorize if a call is going to PSTN
if(!proxy_authorize("
mydomain.com", "subscriber"))
{
proxy_challenge("mydomain.com", "0");
return;
};
xlog("L_INFO", "CALL: Call to check voicemail\n");
rewritehostport("myserver-ipaddress:5090");
}
else
{
if (does_uri_exist())
{
#Call is to sip client, so do nothing but route
xlog("L_INFO", "CALL: Sip client\n");
if (!lookup("location"))
{
# sl_send_reply("404", "Not Found");
# log(1, "ERROR: User Not Found\n");
rewritehostport("myserver-ipaddress:5090");
t_relay();
return;
};
}
else
{
#authorize if a call is going to PSTN
if(!proxy_authorize("
mydomain.com", "subscriber"))
{
proxy_challenge("mydomain.com", "0");
return;
};
#Call destination is PSTN, so send it to the gateway (Net.com)
xlog("L_INFO", "CALL: PSTN gateway1\n");
rewritehostport("provider-ip:5060");
};
};
#Make sure that all subsequent requests go through us;
record_route();
}
else
{
if (does_uri_exist())
{
#Call is to sip client, so do nothing but route
xlog("L_INFO", "CALL: Sip client\n");
if (!lookup("location"))
{
# sl_send_reply("404", "Not Found");
# log(1, "ERROR: User Not Found\n");
rewritehostport("myserver-ipaddress:5090");
t_relay();
return;
};
}
else
{
#Call destination is PSTN, so send it to the gateway (Net.com)
xlog("L_INFO", "CALL: PSTN gateway2\n");
rewritehostport("provider-ip:5060");
};
record_route();
};
#ALL PROCESSING IS DONE, SO ROUTE
route(1);
}
route[1]
{
#send the call outward
if(method=="INVITE" && !isflagset(10))
{
t_on_failure("2");
};
if (!t_relay())
{
xlog("L_WARN", "ERROR: t_relay failed");
sl_reply_error();
};
}
failure_route[2]
{
if(!t_was_cancelled())
{
revert_uri();
rewritehostport("myserver-ipaddress:5090");
append_branch();
#PREVENT SOME CRAZY VOICEMAIL LOOP
xlog("L_INFO", "INFO: CALL TO VOICEMAIL");
setflag(10);
route(1);
}
}
ram