Whenever I make a call I get these entries in the
log....
Jun 7 17:56:29 ns2 ser[520]: WARNING: script
writer didn't release transaction
Jun 7 17:56:42 ns2 ser[522]: ERROR:
t_get_trans_ident: no transaction found
Jun 7 17:56:42 ns2 ser[522]:
assemble_msg: t_get_trans_ident failed
Jun 7 17:56:42 ns2 ser[522]:
ERROR:tm:t_write_req: Error int assemble_msg
Jun 7 17:56:42 ns2
ser[522]: ERROR: t_reply: cannot send a t_reply to a message for which no
T-state has been established
If the user is online I get connected
properly, if user is offline I get connected to sems. So It seems to be working
after all. But I had this config running for three days then I got a lot of
errors regarding t_newtran and out of memory... and phones lost their
registration.
Also does any have
any idea where to put t_release() to avoid the first WARNING
message...
This is my
ser.cfg
debug=3
fork=yes
log_stderror=no
listen=212.247.91.237
port=5060
children=4
alias=sip.serverhallen.com
dns=no
rev_dns=no
fifo_mode=0666
fifo="/tmp/ser_fifo"
fifo_db_url="mysql://ser:heslo@localhost/ser"
#LADDA IN DE MODULER
VI
BEHÖVER
#----------------------------------------------------------------------------------------------
loadmodule
"/usr/local/lib/ser/modules/mysql.so" #MySQL database support
loadmodule
"/usr/local/lib/ser/modules/sl.so" #Stateless replies
loadmodule
"/usr/local/lib/ser/modules/tm.so" #Transaction
Management
loadmodule "/usr/local/lib/ser/modules/rr.so" #Routing
and Record-Routing
loadmodule
"/usr/local/lib/ser/modules/maxfwd.so" #Max-Forwards check
loadmodule
"/usr/local/lib/ser/modules/usrloc.so" #User location support
loadmodule
"/usr/local/lib/ser/modules/registrar.so" #Registrar
loadmodule
"/usr/local/lib/ser/modules/auth.so" #Common functions for digest
authentication
loadmodule
"/usr/local/lib/ser/modules/auth_db.so" #Database support for digest
authentication
loadmodule
"/usr/local/lib/ser/modules/uri.so" #Various URI checks
loadmodule
"/usr/local/lib/ser/modules/uri_db.so" #URI checking using
DB
loadmodule "/usr/local/lib/ser/modules/mediaproxy.so" #RTP
Mediaproxy for NATed UAs
loadmodule
"/usr/local/lib/ser/modules/nathelper.so" #Functions to handle NAT
traversal
loadmodule "/usr/local/lib/ser/modules/textops.so" #Message
Textual Operations
loadmodule
"/usr/local/lib/ser/modules/avpops.so" #avp operations, pseudo-variable
support
loadmodule "/usr/local/lib/ser/modules/domain.so" #checks if a
host part of an URI is "local" or not.
loadmodule
"/usr/local/lib/ser/modules/permissions.so" #determine if a call has
appropriate permission to be established
#VARIABLER FÖR
DATABAS OCH HANTERINGA
AUTENTISIERING
#----------------------------------------------------------------------------------------------
modparam("auth_db|permissions|uri_db|usrloc",
"db_url", "mysql://ser:heslo@localhost/ser")
modparam("auth_db",
"calculate_ha1",
1)
modparam("auth_db",
"password_column", "password")
modparam("usrloc", "db_mode",
2)
modparam("rr", "enable_full_lr",
1)
#VARIABLER FÖR
HANTERING AV NATade
UAs
#-----------------------------------------------------------------------------------------------
modparam("nathelper",
"rtpproxy_disable", 1)
modparam("nathelper", "natping_interval",
0)
modparam("mediaproxy","natping_interval",
30)
modparam("mediaproxy","mediaproxy_socket",
"/var/run/mediaproxy.sock")
modparam("mediaproxy","sip_asymmetrics","/usr/local/etc/ser/sip-clients")
modparam("mediaproxy","rtp_asymmetrics","/usr/local/etc/ser/rtp-clients")
modparam("registrar",
"nat_flag",
6)
#VARIABLER FÖR
HANTERING AV
PSTN
#-----------------------------------------------------------------------------------------------
modparam("tm",
"fr_inv_timer",
27)
modparam("tm",
"fr_inv_timer_avp",
"inv_timeout")
modparam("permissions", "db_mode",
1)
modparam("permissions",
"trusted_table",
"trusted")
#MEDDELANDEHANTERING
AV SIP
MEDDELANDEN
#-----------------------------------------------------------------------------------------------
#Alla
meddelanden kommer behandlas enligt detta regelverk i sekventiell
ordning
route {
#
-----------------------------------------------------------------
#
Sanity Check Section, Kontrollera hur många gånger ett meddelande tagits
emot.
#
-----------------------------------------------------------------
if
(!mf_process_maxfwd_header("10"))
{
sl_send_reply("483", "Too Many
Hops");
break;
};
if (msg:len
> max_len)
{
sl_send_reply("513", "Message
Overflow");
break;
};
#
-----------------------------------------------------------------
#
Record Route Section, Sektion som lägger till vår egen sip server i routing
kedjan så att svaren kommer tillbaka till oss.
#
-----------------------------------------------------------------
if
(method=="INVITE" && client_nat_test("3"))
{
record_route_preset("212.247.91.237:5060;nat=yes");
}
else if (method!="REGISTER")
{
record_route();
};
#
-----------------------------------------------------------------
#
Call Tear Down Section, Denna sektion hanterar nedtagning av samtal
#
-----------------------------------------------------------------
if
(method=="BYE" || method=="CANCEL")
{ #
end_media_session();
#
if(!t_write_req("/tmp/am_fifo","bye"))
{
t_reply("500","error contacting
sems");
};
};
#
-----------------------------------------------------------------
#
Loose Route Section,
#
-----------------------------------------------------------------
if
(loose_route())
{
if (has_totag()
&& (method=="INVITE" || method=="ACK")) {
if
(client_nat_test("3")||search("^Route:.*;nat=yes")){
setflag(6);
use_media_proxy();
};
};
route(1);
break;
};
#
-----------------------------------------------------------------
#
Call Type Processing Section, om meddelandet inte skulle skickas vidare är det
förmodligen riktat till SER
#
-----------------------------------------------------------------
if
(uri!=myself)
{
route(5);
route(1);
break;
};
if
(uri==myself)
{
# switch
to statefull mode:
if (!t_newtran()){
sl_send_reply("500","could not create
transaction");
break;
};
if (method=="ACK")
{
route(6);
break;
}
else if (method=="CANCEL")
{
route(3);
break;
}
else if (method=="INVITE")
{
route(3);
break;
}
else if (method=="REGISTER")
{
route(2);
break;
};
lookup("aliases");
if
(uri!=myself)
{
route(5);
route(1);
break;
};
if (!lookup("location"))
{
sl_send_reply("404", "User not
found");
break;
};
};
log("NO
MATCH");
route(1);
}
route[1] {
#
-----------------------------------------------------------------
#
Default Message Handler, Standardhantering av Meddelanden
#
-----------------------------------------------------------------
t_on_reply("1");
if
(!t_relay()){
if
(method=="INVITE" || method=="ACK")
{
end_media_session();
};
sl_reply_error();
};
}
route[2] {
#
-----------------------------------------------------------------
#
REGISTER Message Handler
#
-----------------------------------------------------------------
sl_send_reply("100",
"Trying");
if (!search("^Contact:\ +\*") &&
client_nat_test("7"))
{
setflag(6);
fix_nated_register();
force_rport();
};
if (!www_authorize("","subscriber"))
{
www_challenge("","0");
break;
};
if (!check_to())
{
sl_send_reply("401",
"Unauthorized");
break;
};
consume_credentials();
if
(!save("location"))
{
sl_reply_error();
};
}
route[3] {
#
-----------------------------------------------------------------
#
CANCEL and INVITE Message Handler
#
-----------------------------------------------------------------
if (client_nat_test("3"))
{
setflag(7);
force_rport();
fix_nated_contact();
};
if (method=="INVITE" &&
!allow_trusted()) {
if (!proxy_authorize("","subscriber"))
{
proxy_challenge("","0");
break;
}
else if (!check_from())
{
sl_send_reply("403", "Use
From=ID");
break;
};
consume_credentials();
};
lookup("aliases");
if
(uri!=myself)
{
route(5);
route(1);
break;
};
if (uri=~"^sip:[+|00][0-9]*@")
{
route(4);
break;
};
if (uri=~"^sip:0[1-9]*@")
{
route(4);
break;
};
if (uri=~"sip:100.*@")
{
if(!t_write_req("/tmp/am_fifo","conference"))
{
t_reply("500","error contacting
sems");
};
break;
};
if (!lookup("location"))
{
#Send caller to users
answering machine if uri is
local
if(!t_write_req("/tmp/am_fifo","voicemail"))
{
t_reply("500","error contacting
sems");
};
break;
};
if (method=="CANCEL")
{
route(1);
break;
};
route(5);
route(1);
}
route[4] {
#
-----------------------------------------------------------------
#
PSTN Handler
#
-----------------------------------------------------------------
rewritehost(" 192.168.0.1 ");
avp_write("i:45",
"inv_timeout");
route(5);
route(1);
}
route[5] {
#
-----------------------------------------------------------------
# RTP
Proxy Enabler, aktiverar proxyn
#
-----------------------------------------------------------------
if (isflagset(6) || isflagset(7))
{
use_media_proxy();
};
}
route[6] {
#
------------------------------------------------------------------------
#
ACK Handler
#
------------------------------------------------------------------------
#
------------------------------------------------------------------------
#
Aliases Section, hanterar acks
#
------------------------------------------------------------------------
lookup("aliases");
if
(uri!=myself)
{
route(1);
break;
};
lookup("location");
route(1);
}
onreply_route[1] {
if ((isflagset(6) || isflagset(7)) &&
(status=~"(180)|(183)|2[0-9][0-9]")) {
if (!search("^Content-Length:\ +0"))
{
use_media_proxy();
};
};
if (client_nat_test("1"))
{
fix_nated_contact();
};
}