Hi all:
I am trying nathelper module
refer to (http://www.informatik.uni-bremen.de/~prelle/terena/cookbook/main/ch04s07.ht…)
but when run ser , it say unknown command , missing load module?
and the error is
if (method == "REGISTER" || ! search("^Record-Route:")) {
and each line when use "search" , always says it has errors
can anyone give me any idea what was wrong ?
thanks
jimmy
In the overly simplified version below, assuming I have 2 ip's:
192.168.0.1 , and 1.2.3.4 How do I specify which IP will be replaced?
In this particular case I want it to always replace with 1.2.3.4 on
packets
going out, and 192.168.0.1 on the way in. From my example it's always
replacing it with the internal ip.
For example the following would be nice:
EIP=1.2.3.4
IIP=192.168.0.1
fix_nated_contact(EIP);
fix_nated_sdp(EIP);
etc.
if (method == "INVITE") {
fix_nated_contact();
fix_nated_sdp("3")
if (force_rtp_proxy("FAEE"))
t_on_reply("1");
}
onreply_route[1] {
if (!(status=~"183" || status=~"200"))
break;
fix_nated_contact();
fix_nated_sdp("3");
force_rtp_proxy("FA");
}
Hello Andy,
SER MediaProxy has fail-over mechanism and achieve what you want. Using
DNS SRV records you may distribute the load among any number of boxes
you have.
http://www.ag-projects.com/SER_Media_Proxy.html
--
Adrian
Hi Jan,
thanks for your answer.
however, How does this solution scale?
I may have a large number of users behind NAT.
Is it possible to have a failover.. i.e. send to to rtpproxy1, if it is
down/busy send to rtpproxy2, rtpproxy3, etc? From what I can see in the
source code there can only be one rtpproxy at a time. Is this correct?
Or
am I missing something.
Is anyone deploying a large number of users using rtpproxy? What have
you
found?
regards,
Andy
Hello Andy,
SER MediaProxy has fail-over mechanism and achieve what you want. Using
DNS SRV records you may distribute the load among any number of boxes
you have.
http://www.ag-projects.com/SER_Media_Proxy.html
--
Adrian
Hi Jan,
thanks for your answer.
however, How does this solution scale?
I may have a large number of users behind NAT.
Is it possible to have a failover.. i.e. send to to rtpproxy1, if it is
down/busy send to rtpproxy2, rtpproxy3, etc? From what I can see in the
source code there can only be one rtpproxy at a time. Is this correct?
Or
am I missing something.
Is anyone deploying a large number of users using rtpproxy? What have
you
found?
regards,
Andy
I recompiled and install ser-0.8.12 in WhiteBox Linux 3. Everything its
ok.
I installed SerWeb-2004-01-04, but i cant create users, the page show me
the users, find users, but i can't create users, no button, no tab for
this. Reading the list many users can do this.
Whats its the problem, any ideas ?
Regards!
--
Sergio Díaz Escobar. CCNA
<sdiaz at comnet dot net dot mx>
Network Engineer - Information Technology
COMNET, S.A. DE C.V.
Patriotismo 889 7o. Piso Col. Mixcoac
Mexico, 039100, D.F.
(52) 55 12539230 <> 121 Fax. (52) 55 12539240
Computers are unreliable, but humans are even more unreliable.
Any system which depends on human reliability is unreliable.
Murphy`s Law.
___________________________________________________________________
This email may be confidential and/or privileged. Only the intended
recipient may access or use it. Any dissemination, distribution or
copying of this email is strictly prohibited. If you are not the
intended recipient please notify us immediately by return email and
then erase the email.
We use virus scanning software but exclude all liability for viruses
or similar in any attachment or message...,..,..,.
With this command you checkout the the current (unstable) release.
Maybe you have mixed ab unstable and stable versions of the modules.
Delete everything ser related
rm -rf /usr/local/lib/ser
rm /usr/local/sbin/ser*
also remove any ser-rpms if you have installed them prior.
and try make, make install again
klaus
Harold Workman wrote:
> Klaus,
>
> Maybe im doing something wrong...isnt
> cvs -d:pserver:anonymous@cvs.ser.berlios.de:/cvsroot/ser co sip_server
>
> supposed to update the core as well? When I try starting ser it gives me a
> 0.8.12 core not compatible error with the modules. all the modules are in
> the correct path on the config....
>
> -----Original Message-----
> From: Klaus Darilion [mailto:klaus.mailinglists@pernau.at]
> Sent: Thursday, April 22, 2004 10:32 AM
> To: hworkman(a)cytelcom.com
> Cc: serusers(a)lists.iptel.org
> Subject: Re: [Serusers] Error compiling Radius and ACC
>
>
> I did it on monday with unstable cvs and everything was fine.
>
> Do you have manually set the path to
> /usr/local/sip_router/modules/acc/acc.so ?
>
> Default is /usr/local/sip_router/modules/
> and all modules are in this directory.
>
> klaus
>
> Harold Workman wrote:
>
>>Klaus,
>>
>>Thanks so much.....Using radiusclient-ng fixed the compiling
>
> problem....but
>
>>now that i have it installed im getting this when i try to start SER. I
>>read the previous emails, and have already updated everything (using
>>0.8.13-dev-28), make clean, and recompiled everything....still got this
>>error...
>>
>>Apr 22 10:12:20 hstntxsipua ser: ERROR: load_module: could not open module
>></usr/local/sip_router/modules/acc/acc.so>:
>>/usr/local/sip_router/modules/acc/acc.so: undefined symbol: log_facility
>>Apr 22 10:12:20 hstntxsipua ser: parse error (80,13-54): failed to load
>>module
>>Apr 22 10:12:20 hstntxsipua ser: ERROR: load_module: could not open module
>></usr/local/sip_router/modules/auth_radius/auth_radius.so>:
>>/usr/local/sip_router/modules/auth_radius/auth_radius.so: undefined
>
> symbol:
>
>>log_facility
>>
>>
>>
>>-----------------------
>>Harold Workman
>>CCNA, CCNP
>>Cytel Communications
>>hworkman(a)cytelcom.com
>>Ph. 281-449-4000 x3098
>>
>>
>>-----Original Message-----
>>From: Klaus Darilion [mailto:klaus.mailinglists@pernau.at]
>>Sent: Thursday, April 22, 2004 9:33 AM
>>To: Harold Workman
>>Cc: serusers(a)lists.iptel.org
>>Subject: Re: [Serusers] Error compiling Radius and ACC
>>
>>
>>You have to use the radiusclient-ng for usntable ser:
>>http://developer.berlios.de/projects/radiusclient-ng/
>>
>>klaus
>>
>>Harold Workman wrote:
>>
>>
>>>Hi,
>>>
>>>Ive got the latest ser from cvs, and cannot compile acc or radius. I have
>>>already installed radius server, radius client_0-3-2 I edited the make
>>
>>files
>>
>>
>>>and here is what i get when i attempt to compile them.
>>>
>>>
>>>make[1]: Entering directory `/usr/local/sip_router/modules/acc'
>>>gcc -fPIC -DPIC -g -O9 -funroll-loops -Wcast-align -Wall
>>>-minline-all-stringops -malign-double -falign-loops -mcpu=athlon
>>>-DNAME='"ser"' -DVERSION='"0.8.13-dev-28"' -DARCH='"i386"' -DOS='"linux"'
>>>-DCOMPILER='"gcc 3.3"' -D__CPU_i386 -D__OS_linux
>>>-DCFG_DIR='"/usr/local/etc/ser/"' -DPKG_MALLOC -DSHM_MEM -DSHM_MMAP
>>>-DDNS_IP_HACK -DUSE_IPV6 -DUSE_TCP -DDISABLE_NAGLE -DF_MALLOC -DFAST_LOCK
>>>-DADAPTIVE_WAIT -DADAPTIVE_WAIT_LOOPS=1024 -DHAVE_GETHOSTBYNAME2
>>>-DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD -DHAVE_MSG_NOSIGNAL
>>>-DHAVE_MSGHDR_MSG_CONTROL -DRAD_ACC -I/usr/local/include -c acc.c -o acc.o
>>>acc.c: In function `acc_rad_request':
>>>acc.c:597: warning: passing arg 2 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:597: warning: passing arg 3 of `rc_avpair_add' makes pointer from
>>
>>integer
>>
>>
>>>without a cast
>>>acc.c:597: warning: passing arg 4 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:597: error: too many arguments to function `rc_avpair_add'
>>>acc.c:602: warning: passing arg 2 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:602: warning: passing arg 3 of `rc_avpair_add' makes pointer from
>>
>>integer
>>
>>
>>>without a cast
>>>acc.c:602: warning: passing arg 4 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:602: error: too many arguments to function `rc_avpair_add'
>>>acc.c:609: warning: passing arg 2 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:609: warning: passing arg 3 of `rc_avpair_add' makes pointer from
>>
>>integer
>>
>>
>>>without a cast
>>>acc.c:609: warning: passing arg 4 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:609: error: too many arguments to function `rc_avpair_add'
>>>acc.c:614: warning: passing arg 2 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:614: warning: passing arg 3 of `rc_avpair_add' makes pointer from
>>
>>integer
>>
>>
>>>without a cast
>>>acc.c:614: warning: passing arg 4 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:614: error: too many arguments to function `rc_avpair_add'
>>>acc.c:633: warning: passing arg 2 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:633: warning: passing arg 3 of `rc_avpair_add' makes pointer from
>>
>>integer
>>
>>
>>>without a cast
>>>acc.c:633: warning: passing arg 4 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:633: error: too many arguments to function `rc_avpair_add'
>>>acc.c:644: warning: passing arg 2 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:644: warning: passing arg 3 of `rc_avpair_add' makes pointer from
>>
>>integer
>>
>>
>>>without a cast
>>>acc.c:644: warning: passing arg 4 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:644: error: too many arguments to function `rc_avpair_add'
>>>acc.c:666: warning: passing arg 2 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:666: warning: passing arg 3 of `rc_avpair_add' makes pointer from
>>
>>integer
>>
>>
>>>without a cast
>>>acc.c:666: warning: passing arg 4 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:666: error: too many arguments to function `rc_avpair_add'
>>>acc.c:677: warning: passing arg 2 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:677: warning: passing arg 3 of `rc_avpair_add' makes pointer from
>>
>>integer
>>
>>
>>>without a cast
>>>acc.c:677: warning: passing arg 4 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:677: error: too many arguments to function `rc_avpair_add'
>>>acc.c:687: warning: passing arg 2 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:687: warning: passing arg 3 of `rc_avpair_add' makes pointer from
>>
>>integer
>>
>>
>>>without a cast
>>>acc.c:687: warning: passing arg 4 of `rc_avpair_add' makes integer from
>>
>>pointer
>>
>>
>>>without a cast
>>>acc.c:687: error: too many arguments to function `rc_avpair_add'
>>>acc.c:694: warning: passing arg 1 of `rc_acct' makes integer from pointer
>>>without a cast
>>>acc.c:694: warning: passing arg 2 of `rc_acct' makes pointer from integer
>>>without a cast
>>>acc.c:694: error: too many arguments to function `rc_acct'
>>>make[1]: *** [acc.o] Error 1
>>>make[1]: Leaving directory `/usr/local/sip_router/modules/acc
>>>
>>>
>>>
>>>
>>>Harold Workman
>>>CCNA, CCNP
>>>Cytel Communications
>>>hworkman(a)cytelcom.com
>>>Ph. 281-449-4000 x3098
>>>
>>>
>>>
>>>
>>>
>>>----------------------------------------------------------------
>>>This message was sent using IMP, the Internet Messaging Program.
>>>
>>>_______________________________________________
>>>Serusers mailing list
>>>serusers(a)lists.iptel.org
>>>http://lists.iptel.org/mailman/listinfo/serusers
>>>
>>>
>>
>>
>>
>
>
Hi,
Ive got the latest ser from cvs, and cannot compile acc or radius. I have
already installed radius server, radius client_0-3-2 I edited the make files
and here is what i get when i attempt to compile them.
make[1]: Entering directory `/usr/local/sip_router/modules/acc'
gcc -fPIC -DPIC -g -O9 -funroll-loops -Wcast-align -Wall
-minline-all-stringops -malign-double -falign-loops -mcpu=athlon
-DNAME='"ser"' -DVERSION='"0.8.13-dev-28"' -DARCH='"i386"' -DOS='"linux"'
-DCOMPILER='"gcc 3.3"' -D__CPU_i386 -D__OS_linux
-DCFG_DIR='"/usr/local/etc/ser/"' -DPKG_MALLOC -DSHM_MEM -DSHM_MMAP
-DDNS_IP_HACK -DUSE_IPV6 -DUSE_TCP -DDISABLE_NAGLE -DF_MALLOC -DFAST_LOCK
-DADAPTIVE_WAIT -DADAPTIVE_WAIT_LOOPS=1024 -DHAVE_GETHOSTBYNAME2
-DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD -DHAVE_MSG_NOSIGNAL
-DHAVE_MSGHDR_MSG_CONTROL -DRAD_ACC -I/usr/local/include -c acc.c -o acc.o
acc.c: In function `acc_rad_request':
acc.c:597: warning: passing arg 2 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:597: warning: passing arg 3 of `rc_avpair_add' makes pointer from integer
without a cast
acc.c:597: warning: passing arg 4 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:597: error: too many arguments to function `rc_avpair_add'
acc.c:602: warning: passing arg 2 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:602: warning: passing arg 3 of `rc_avpair_add' makes pointer from integer
without a cast
acc.c:602: warning: passing arg 4 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:602: error: too many arguments to function `rc_avpair_add'
acc.c:609: warning: passing arg 2 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:609: warning: passing arg 3 of `rc_avpair_add' makes pointer from integer
without a cast
acc.c:609: warning: passing arg 4 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:609: error: too many arguments to function `rc_avpair_add'
acc.c:614: warning: passing arg 2 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:614: warning: passing arg 3 of `rc_avpair_add' makes pointer from integer
without a cast
acc.c:614: warning: passing arg 4 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:614: error: too many arguments to function `rc_avpair_add'
acc.c:633: warning: passing arg 2 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:633: warning: passing arg 3 of `rc_avpair_add' makes pointer from integer
without a cast
acc.c:633: warning: passing arg 4 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:633: error: too many arguments to function `rc_avpair_add'
acc.c:644: warning: passing arg 2 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:644: warning: passing arg 3 of `rc_avpair_add' makes pointer from integer
without a cast
acc.c:644: warning: passing arg 4 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:644: error: too many arguments to function `rc_avpair_add'
acc.c:666: warning: passing arg 2 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:666: warning: passing arg 3 of `rc_avpair_add' makes pointer from integer
without a cast
acc.c:666: warning: passing arg 4 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:666: error: too many arguments to function `rc_avpair_add'
acc.c:677: warning: passing arg 2 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:677: warning: passing arg 3 of `rc_avpair_add' makes pointer from integer
without a cast
acc.c:677: warning: passing arg 4 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:677: error: too many arguments to function `rc_avpair_add'
acc.c:687: warning: passing arg 2 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:687: warning: passing arg 3 of `rc_avpair_add' makes pointer from integer
without a cast
acc.c:687: warning: passing arg 4 of `rc_avpair_add' makes integer from pointer
without a cast
acc.c:687: error: too many arguments to function `rc_avpair_add'
acc.c:694: warning: passing arg 1 of `rc_acct' makes integer from pointer
without a cast
acc.c:694: warning: passing arg 2 of `rc_acct' makes pointer from integer
without a cast
acc.c:694: error: too many arguments to function `rc_acct'
make[1]: *** [acc.o] Error 1
make[1]: Leaving directory `/usr/local/sip_router/modules/acc
Harold Workman
CCNA, CCNP
Cytel Communications
hworkman(a)cytelcom.com
Ph. 281-449-4000 x3098
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
> Hello!
>
> Plese help me, if possible!
> I have a SER server and Vocal b2bua on my linux server. I would like make
> a simple prepaid
> application whith these components.
> I'm beginner in SIP, therefore excuse me for stupid questions.
> SER works fine without b2bua, sends accounting messages to the freeradius
> server, but can't hang up
> conversation depend on user balance amount.
> Therefore i need a b2ua, that watches the sessions, and starts a timer
> (vocal 2b2ua be able to do it )
>
> How works b2bua in this plan? Need i one b2bua between two SER servers for
> calltime controll?
>
> Are there any other simple free solutions for prepaid billing with SER?
>
> Is there anyone who use b2bua with SER server? If yes, please send a
> configuration hint for me!
>
> Thank you.
>
> Regards,
>
> Antal Pletli
>
> email: a.pletli(a)euromacc.hu
Here is my ser.cfg.SER don't start because of acc module
anybody could help me to solved this problem before an other ?
ser -c =>
0(6238) set_mod_param_regex: parameter <db_url> not found in module
<acc>
0(6238) parse error (96,60-61): Can't set module parameter
0(6238) set_mod_param_regex: parameter <db_missed_flag> not found in
module <acc>
0(6238) parse error (97,36-37): Can't set module parameter
0(6238) parse error (195,63-64): unknown command, missing loadmodule?
ERROR: bad config file (3 errors)
regards
#
# $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei 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
debug=9
fork=yes
log_stderror=yes
*/
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=5060
listen=192.168.0.1
children=4
fifo="/tmp/ser_fifo"
fifo_mode=0666
#alias="example.com"
# ------------------ module:wq loading
----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/usr/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so"
loadmodule "/usr/lib/ser/modules/tm.so"
loadmodule "/usr/lib/ser/modules/rr.so"
loadmodule "/usr/lib/ser/modules/maxfwd.so"
loadmodule "/usr/lib/ser/modules/domain.so"
loadmodule "/usr/lib/ser/modules/usrloc.so"
loadmodule "/usr/lib/ser/modules/registrar.so"
loadmodule "/usr/lib/ser/modules/msilo.so"
loadmodule "/usr/lib/ser/modules/vm.so"
loadmodule "/usr/lib/ser/modules/acc.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "/usr/lib/ser/modules/auth.so"
loadmodule "/usr/lib/ser/modules/auth_db.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
#modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
modparam("usrloc", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("usrloc", "db_mode", 1)
#modparam("usrloc", "use_domain", 1)
# --register params--
modparam("registrar", "use_domain", 1)
# -- auth params --
# Uncomment if you are using auth module
#
modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which true in this
config),
# uncomment also the following parameter)
#
modparam("auth_db", "password_column", "password")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# --domain module--
modparam("usrloc", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("domain", "db_mode", 1)
modparam("domain", "domain_table", "domain")
modparam("domain", "domain_col", "domain")
# --msilo params--
modparam("msilo", "registrar", "sip:registrar@example.com")
modparam("msilo", "db_url", "mysql://ser:heslo@localhost/ser")
# --vm params--
modparam("voicemail", "db_url", "mysql://ser:heslo@localhost/ser")
# --acc params--
modparam("acc", "log_level", 1)
modparam("acc", "log_flag", 2)
modparam("acc", "log_missed_flag", 2)
modparam("acc", "log_fmt", "fimos")
modparam("acc", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("acc", "db_missed_flag", 2)
# ------------------------- 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
record_route();
# loose-route processing
if (loose_route()) {
t_relay();
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 (is_from_local()) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
if (!www_authorize("", "subscriber")) {
www_challenge("", "0");
break;
};
save("location");
m_dump();
break;
};
# native SIP destinations are handled using our USRLOC DB
lookup("aliases");
if (!lookup("location")) {
if (method == "MESSAGE") {
if (!t_newtran()) {
sl_reply_error();
break;
};
if (m_store("0")) {
t_reply("202", "Accepted for Later Delivery");
break;
};
t_reply("503", "Service Unavailable");
break;
};
};
if ((method=="INVITE" || method=="ACK") && t_newtran() ) {
t_reply("404", "Not Found");
route(3);
break;
};
};
setflag(2);
# forward to current uri now; use stateful forwarding; that
# works reliably even if we forward from TCP to UDP
t_on_failure("1");
# forward to current uri now; use stateful forwarding; that
# works reliably even if we forward from TCP to UDP
if (!t_relay()) {
sl_reply_error();
};
}
route[3] {
# non-Voip -- just send "off-line"
if (!(method=="INVITE" || method=="ACK" || method=="CANCEL")) {
sl_send_reply("404", "Not Found");
break;
};
if (t_newtran()) {
t_reply("404", "Not Found");
acc_db_request("404 missed call", "missed_calls");
};
}