Greg,
I'm digging though serusers archives and found your report. I suppose it must have
been a private memory leak and I don't remember that we closed
on that. Does the problem persist?
-jiri
At 05:22 AM 11/25/2003, Greg Fausak wrote:
Jiri,
Thanks.
I made these changes (and the loadmodule domain.so) and
the server fires up fine. However, when I send a REGISTER
now I get a message:
#
U 2003/11/24 22:16:09.124528 66.228.44.254:5060 -> 66.228.53.216:5060
SIP/2.0 500 I'm terribly sorry, server error occured (2/TM).
Via: SIP/2.0/UDP 66.228.53.216:5060.
From: <sip:123456@named.com>.
To: <sip:123456@named.com>;tag=a6a1c5f60faecf035a1ae5b6e96e979a-8311.
Call-ID: D54D4F19DB874E9DA7D3354FFF6A0F68(a)named.com.
CSeq: 17301 REGISTER.
Server: Sip EXpress router (0.8.12 (i386/linux)).
Content-Length: 0.
Warning: 392 66.228.44.254:5060 "Noisy feedback tells: pid=5601
req_src_ip=66.228.44.254 req_src_port=5060
in_uri=sip:named.com out_uri=sip:named.com
via_cnt==166".
Also, in the syslog file:
Nov 24 22:16:27 sipproxy ser[5599]: ERROR: build_req_buf_from_sip_req: out of memory
Nov 24 22:16:27 sipproxy ser[5599]: ERROR: print_uac_request: no pkg_mem
Nov 24 22:16:27 sipproxy ser[5599]: ERROR: t_forward_nonack: failure to add branches
I remember reading a thread about this error.
Something about shared memory?
I've got a linux 9.x system, here is the config:
---greg
---
#
# $Id: ser.cfg,v 1.23 2003/10/13 22:51:55 jiri Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters ------------------------
debug=3 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode
fork=no
log_stderror=yes
*/
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=5060
children=4
fifo="/tmp/ser_fifo"
alias="named.com"
alias="66.228.44.254"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
#loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/acc.so"
loadmodule "/usr/local/lib/ser/modules/domain.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/postgres.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/group.so"
loadmodule "/usr/local/lib/ser/modules/uri.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/exec.so"
loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
loadmodule "/usr/local/lib/ser/modules/xlog.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
modparam("domain", "db_mode", 1)
modparam("domain", "domain_table", "domain")
modparam("domain", "domain_col", "did")
modparam("domain","db_url",
"X")
modparam("usrloc|group", "use_domain", 1)
modparam("usrloc","db_mode",1)
modparam("usrloc|group|auth_db","user_column","user_id")
modparam("usrloc|uri|group|auth_db","db_url",
"X")
modparam("uri","subscriber_user_column","user_id")
#modparam("uri","db_url",
# "X")
#modparam("group","user_column","user_id")
#modparam("group","db_url",
# "X")
modparam("acc", "log_level", 1)
modparam("acc", "log_flag", 1 )
modparam("acc", "log_fmt", "miocfsu" )
#modparam("auth_db","user_column","user_id")
#modparam("auth_db","db_url",
# "X")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
#modparam("rr", "enable_full_lr", 1)
# ------------------------- request routing logic -------------------
# main routing logic
route{
# initial sanity checks -- messages with
# max_forwards==0, or excessively long requests
# if (!mf_process_maxfwd_header("10")) {
# sl_send_reply("483","Too Many Hops");
# break;
# };
if (msg:len >= max_len ) {
sl_send_reply("513", "Message too big");
break;
};
# we record-route all messages -- to make sure that
# subsequent messages will go through our proxy; that's
# particularly good if upstream and downstream entities
# use different transport protocol
if (!method=="REGISTER") record_route();
# subsequent messages withing a dialog should take the
# path determined by record-routing
if (loose_route()) {
# mark routing logic in request
append_hf("P-hint: rr-enforced\r\n");
xlog("L_WARN", "LOOSE: %Ts call-id:%ci cseq:%ci contact:%ct
from:%fu fromtag:%ft to:%tu totag:%tt method:%rm ruri:%ru messageid:%mi\n");
setflag(1);
setflag(2);
route(1);
break;
};
# if (!uri==myself) {
if(!is_from_local()) {
# mark routing logic in request
append_hf("P-hint: outbound\r\n");
route(1);
break;
};
# if the request is for other domain use UsrLoc
# (in case, it does not work, use the following command
# with proper names and addresses in it)
if (uri==myself) {
if (method=="REGISTER") {
if (!www_authorize("named.com", "subscriber"))
{
www_challenge("", "0");
break;
};
save("location");
break;
};
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound alias\r\n");
route(1);
break;
};
if (method=="INVITE" || method=="ACK") {
if (!www_authorize("named.com", "subscriber"))
{
www_challenge("", "0");
break;
};
xlog("L_WARN", "INVITE: %Ts call-id:%ci cseq:%ci
contact:%ct from:%fu fromtag:%ft to:%tu totag:%tt method:%rm ruri:%ru
messageid:%mi\n");
#
if (lookup("location")) {
route(1);
break;
};
if(uri=~"sip:[0-9]{10}@.*")
{
xlog("L_WARN", "10DIGIT: %Ts call-id:%ci
cseq:%ci contact:%ct from:%fu fromtag:%ft to:%tu totag:%tt method:%rm ruri:%ru
messageid:%mi\n");
route(2);
break;
}
xlog("L_WARN", "UNKNOWN: %Ts call-id:%ci cseq:%ci
contact:%ct from:%fu fromtag:%ft to:%tu totag:%tt method:%rm ruri:%ru
messageid:%mi\n");
sl_send_reply("580", "Sorry");
break;
};
if (method=="CANCEL") {
xlog("L_WARN", "CANCEL: %Ts call-id:%ci cseq:%ci
contact:%ct from:%fu fromtag:%ft to:%tu totag:%tt method:%rm ruri:%ru
messageid:%mi\n");
route(2);
break;
};
sl_send_reply("404", "Not Found");
break;
};
xlog("L_WARN", "FAILATBOTTOM: %Ts call-id:%ci cseq:%ci contact:%ct
from:%fu fromtag:%ft to:%tu totag:%tt method:%rm ruri:%ru messageid:%mi\n");
break;
}
route[1]
{
# send it out now; use stateful forwarding as it works reliably
# even for UDP2TCP
if (!t_relay()) {
sl_reply_error();
};
}
route[2]
{
consume_credentials();
rewritehostport("65.77.154.243:5060");
if(!t_relay()) {
sl_reply_error();
break;
};
}
[root@sipproxy ser]#
Jiri Kuthan wrote:
>At 12:16 AM 11/24/2003, Greg Fausak wrote:
>
>
>>Jiri,
>>
>>I do want to have a multi-domain capability.
>
>fragments:
># -- multi-domain
>modparam("domain", "db_mode", 1)
>modparam("usrloc|group", "use_domain", 1)
>...
>if (!is_from_local()) { # check against domain-module table
>.... /* outbound */
>break;
>};
># our domains ...
> if (!www_authorize("", "subscriber")) {
> # challenge if none or invalid credentials
> www_challenge("", "0");
> break;
> };
>That's pretty much it, I guess. The list of served domains can be
>manipulated using serctl.
>
>
>>I'd also like to be able to run multiple processes
>>on the same database. These may be different problems.
>
>Why? (I mean it sounds like a ticket for problems to me.)
>-jiri
.