Here is it Basic config for Kamailio 1.4.3
####### Global Parameters #########
debug=9 # change this to 3
log_stderror=yes
fork=yes
children=4
listen=udp:x.x.x.x:5060
####### Modules Section ########
#set module path
mpath="/opt/openser/lib64/kamailio/modules/"
loadmodule "db_mysql.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "maxfwd.so"
loadmodule "textops.so"
loadmodule "mi_fifo.so"
#loadmodule "uri_db.so"
loadmodule "uri.so"
loadmodule "xlog.so"
loadmodule "carrierroute.so"
# ----------------- setting module-specific parameters ---------------
# ----- mi_fifo params -----
modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")
# ----- carrierroute params -----
modparam("carrierroute", "db_url",
"mysql://help:help@localhost/sip")
modparam("carrierroute", "config_source", "db")
####### Routing Logic ########
# main request routing logic
route{
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
};
if (has_totag()) {
# sequential request withing a dialog should
# take the path determined by record-routing
if (loose_route()) {
# if (is_method("BYE")) {
# with or without BYE i have the same result
# if (t_check_trans())
# t_relay();
# }
route(10);
} else {
if ( is_method("ACK") ) {
if ( t_check_trans() ) {
# non loose-route, but stateful
ACK; must be an ACK after a 487 or e.g. 404 from upstream server
t_relay();
exit;
} else {
# ACK without matching
transaction ... ignore and discard.\n");
xlog("L_WARN", "[$mi] discarding
ACK\n");
exit;
}
}
sl_send_reply("404","Not here");
}
exit;
}
#initial requests
# CANCEL processing
if (is_method("CANCEL")) {
if (t_check_trans())
t_relay();
exit;
}
t_check_trans();
# record routing
if (!is_method("REGISTER|MESSAGE"))
record_route();
if (!uri==myself) {
append_hf("P-hint: outbound\r\n");
route(10);
exit;
}
# requests for my domain
if ($rU==NULL) {
# request with no Username in RURI
sl_send_reply("484","Address Incomplete");
exit;
}
if (is_method("INVITE")) {
if (cr_route("default", "3", "$rU",
"$rU", "call_id")) {
t_on_failure("1");
route(10);
exit;
}
exit;
}
}
route[10] {
cr_user_carrier("$fU", "$fd", "$avp(s:carrier)");
$avp(s:domain)="3";
if (!cr_route("$avp(s:carrier)", "$avp(s:domain)",
"$rU",
"$rU", "call_id")) {
xlog("L_ERR", "cr_route failed\n");
exit;
}
# if you store also the port as part of the rewrite host,
# otherwise you can just use $rd later
$avp(s:host)= $rd;
t_on_failure("1");
# xlog("method: $rm");
if (!t_relay()) {
sl_reply_error();
}
}
#onreply_route[2] {
# xlog("incoming reply\n");
#}
failure_route[1] {
revert_uri();
if (!cr_next_domain("$avp(s:carrier)", "$avp(s:domain)",
"$rU",
"$avp(s:host)", "$T_reply_code", "$avp(s:domain)")) {
xlog("L_ERR", "cr_next_domain failed\n");
exit;
}
if (!cr_route("$avp(s:carrier)", "$avp(s:domain)",
"$rU", "$rU",
"call_id")) {
xlog("L_ERR", "cr_route failed\n");
exit;
}
# $avp(s:host)= $rd+":"+$rp;
$avp(s:host)= $rd;
t_on_failure("1");
append_branch();
if (!t_relay()) {
xlog("L_ERR", "t_relay failed\n");
exit;
}
}
i am running solaris 10, 64 bits, then i really don't know if i should
not try in this platform.
I somebody has a Working config as an example will be great.
but i still dont have the BYE, is not leaving the server, when i sniff
the network.
the kamailio debug shows at least 4 times something like this :
bash-3.00# Feb 17 22:32:11 [15673] DBG:tm:utimer_routine: timer
routine:7,tl=fffffffef0293738 next=0, timeout=44300000
Feb 17 22:32:11 [15673] DBG:tm:retransmission_handler:
retransmission_handler : request resending (t=fffffffef0293518, BYE
sip:4 ... )
Feb 17 22:32:11 [15673] DBG:tm:set_timer: relative timeout is 4000000
Feb 17 22:32:11 [15673] DBG:tm:insert_timer_unsafe: [7]:
fffffffef0293738 (48300000)
Feb 17 22:32:11 [15673] DBG:tm:retransmission_handler:
retransmission_handler : done
bash-3.00# Feb 17 22:32:16 [15673] DBG:tm:utimer_routine: timer
routine:7,tl=fffffffef0293738 next=0, timeout=48300000
Feb 17 22:32:16 [15673] DBG:tm:retransmission_handler:
retransmission_handler : request resending (t=fffffffef0293518, BYE
sip:4 ... )
Feb 17 22:32:16 [15673] DBG:tm:set_timer: relative timeout is 4000000
Feb 17 22:32:16 [15673] DBG:tm:insert_timer_unsafe: [7]:
fffffffef0293738 (52300000)
Feb 17 22:32:16 [15673] DBG:tm:retransmission_handler:
retransmission_handler : done
thanks
F
On Tue, 2009-02-17 at 18:48 +0100, Henning Westerholt wrote:
On Tuesday 17 February 2009, Omar wrote:
i did
there is no bye leaving from the kamailio at all
the config is i stated before but now without the exit in the BYE
condition.
kamailio saves the bye when the bye comes from the B side, yes
but it does not send anything back to the Originator GW, as it should.
i made the captures and nothing. Kamailio receives and process the bye
for CDR, but it does not send the BYE to the originator. i captured in
the port 5060 and nothing comes.
it is maybe a bug.?
Hi Omar,
it could be a bug, a misconfiguration, or a user agent which does not act
according the standard. Does the BYE reach your forwarding/ t_relay statement
in your config, you can check with xlog as well. This gives you the method of
the SIP message you actually proceed in the config, just add this before the
forwarding statement.
xlog("method: $rm");
Cheers,
Henning