Hi<br><br>I&#39;ve got a weird problem I do not manage to solve alone.<br><br>I&#39;m using v1.3.0 with mysql.so and and usrloc.so, on redhat enterprise v4.<br><br>When there is a permanent user location in the database (added previously with openserctl ul add), the server does not start:<br>
- there is no log about any error,<br>- after starting the server, there is no running openser process<br><br>Is it a server bug or should I activate/configure something else ?<br><br>Below my signature is my configuration file.<br>
<br>Thanks in advance for your help<br>Pascal<br><br><br><br>#<br># $Id: openser.cfg 3542 2008-01-16 15:00:34Z miconda $<br>#<br># OpenSER basic configuration script<br>#&nbsp;&nbsp;&nbsp;&nbsp; by Anca Vamanu &lt;<a href="mailto:anca@voice-system.ro">anca@voice-system.ro</a>&gt;<br>
#<br># Please refer to the Core CookBook at <a href="http://www.openser.org/dokuwiki/doku.php">http://www.openser.org/dokuwiki/doku.php</a><br># for a explanation of possible statements, functions and parameters.<br>#<br>
<br><br>####### Global Parameters #########<br><br>debug=9<br>log_stderror=yes<br>log_facility=LOG_LOCAL0<br><br>fork=yes<br>children=4<br><br>/* uncomment the following lines to enable debugging */<br>#debug=9<br>#fork=no<br>
#log_stderror=yes<br><br>/* uncomment the next line to disable TCP (default on) */<br>#disable_tcp=yes<br><br>/* uncomment the next line to enable the auto temporary blacklisting of <br>&nbsp;&nbsp; not available destinations (default disabled) */<br>
#disable_dns_blacklist=no<br><br>/* uncomment the next line to enable IPv6 lookup after IPv4 dns <br>&nbsp;&nbsp; lookup failures (default disabled) */<br>#dns_try_ipv6=yes<br><br>/* uncomment the next line to disable the auto discovery of local aliases<br>
&nbsp;&nbsp; based on revers DNS on IPs (default on) */<br>#auto_aliases=no<br><br>/* uncomment the following lines to enable TLS support&nbsp; (default off) */<br>#disable_tls = no<br>#listen = tls:your_IP:5061<br>#tls_verify_server = 1<br>
#tls_verify_client = 1<br>#tls_require_client_certificate = 0<br>#tls_method = TLSv1<br>#tls_certificate = &quot;/usr/local/etc/openser/tls/user/user-cert.pem&quot;<br>#tls_private_key = &quot;/usr/local/etc/openser/tls/user/user-privkey.pem&quot;<br>
#tls_ca_list = &quot;/usr/local/etc/openser/tls/user/user-calist.pem&quot;<br><br><br><br>/* uncomment and configure the following line if you want openser to <br>&nbsp;&nbsp; bind on a specific interface/port/proto (default bind on all available) */<br>
#listen=udp:<a href="http://192.168.1.2:5060">192.168.1.2:5060</a><br><br>listen=<a href="http://192.168.1.4:5060">192.168.1.4:5060</a><br>port=5060<br><br># Uncomment this to prevent the blacklisting of temporary not available destinations<br>
disable_dns_blacklist=yes<br><br>alias=&quot;<a href="http://pascal.net">pascal.net</a>&quot;<br><br>####### Modules Section ########<br><br>#set module path<br>mpath=&quot;/usr/local/lib/openser/modules/&quot;<br><br>/* uncomment next line for MySQL DB support */<br>
#loadmodule &quot;mysql.so&quot;<br>loadmodule &quot;sl.so&quot;<br>loadmodule &quot;tm.so&quot;<br>loadmodule &quot;rr.so&quot;<br>loadmodule &quot;maxfwd.so&quot;<br>loadmodule &quot;usrloc.so&quot;<br>loadmodule &quot;registrar.so&quot;<br>
loadmodule &quot;textops.so&quot;<br>loadmodule &quot;mi_fifo.so&quot;<br>#loadmodule &quot;uri_db.so&quot;<br>loadmodule &quot;uri.so&quot;<br>loadmodule &quot;xlog.so&quot;<br>loadmodule &quot;acc.so&quot;<br>/* uncomment next lines for MySQL based authentication support <br>
&nbsp;&nbsp; NOTE: a DB (like mysql) module must be also loaded */<br>loadmodule &quot;auth.so&quot;<br>#loadmodule &quot;auth_db.so&quot;<br>/* uncomment next line for aliases support<br>&nbsp;&nbsp; NOTE: a DB (like mysql) module must be also loaded */<br>
#loadmodule &quot;alias_db.so&quot;<br>/* uncomment next line for multi-domain support<br>&nbsp;&nbsp; NOTE: a DB (like mysql) module must be also loaded<br>&nbsp;&nbsp; NOTE: be sure and enable multi-domain support in all used modules<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (see &quot;multi-module params&quot; section ) */<br>
#loadmodule &quot;domain.so&quot;<br>/* uncomment the next two lines for presence server support<br>&nbsp;&nbsp; NOTE: a DB (like mysql) module must be also loaded */<br>#loadmodule &quot;presence.so&quot;<br>#loadmodule &quot;presence_xml.so&quot;<br>
<br><br># ----------------- setting module-specific parameters ---------------<br><br><br># ----- mi_fifo params -----<br>modparam(&quot;mi_fifo&quot;, &quot;fifo_name&quot;, &quot;/tmp/openser_fifo&quot;)<br><br><br># ----- rr params -----<br>
# add value to ;lr param to cope with most of the UAs<br>modparam(&quot;rr&quot;, &quot;enable_full_lr&quot;, 1)<br># do not append from tag to the RR (no need for this script)<br>modparam(&quot;rr&quot;, &quot;append_fromtag&quot;, 0)<br>
<br><br># ----- rr params -----<br>modparam(&quot;registrar&quot;, &quot;method_filtering&quot;, 1)<br>/* uncomment the next line to disable parallel forking via location */<br># modparam(&quot;registrar&quot;, &quot;append_branches&quot;, 0)<br>
/* uncomment the next line not to allow more than 10 contacts per AOR */<br>#modparam(&quot;registrar&quot;, &quot;max_contacts&quot;, 10)<br><br><br># ----- uri_db params -----<br>/* by default we disable the DB support in the module as we do not need it<br>
&nbsp;&nbsp; in this configuration */<br>#modparam(&quot;uri_db&quot;, &quot;use_uri_table&quot;, 0)<br>#modparam(&quot;uri_db&quot;, &quot;db_url&quot;, &quot;&quot;)<br><br><br># ----- acc params -----<br>/* what sepcial events should be accounted ? */<br>
modparam(&quot;acc&quot;, &quot;early_media&quot;, 1)<br>modparam(&quot;acc&quot;, &quot;report_ack&quot;, 1)<br>modparam(&quot;acc&quot;, &quot;report_cancels&quot;, 1)<br>/* by default ww do not adjust the direct of the sequential requests.<br>
&nbsp;&nbsp; if you enable this parameter, be sure the enable &quot;append_fromtag&quot;<br>&nbsp;&nbsp; in &quot;rr&quot; module */<br>modparam(&quot;acc&quot;, &quot;detect_direction&quot;, 0)<br>/* account triggers (flags) */<br>modparam(&quot;acc&quot;, &quot;failed_transaction_flag&quot;, 3)<br>
modparam(&quot;acc&quot;, &quot;log_flag&quot;, 1)<br>modparam(&quot;acc&quot;, &quot;log_missed_flag&quot;, 2)<br>/* uncomment the following lines to enable DB accounting also */<br>modparam(&quot;acc&quot;, &quot;db_flag&quot;, 1)<br>
modparam(&quot;acc&quot;, &quot;db_missed_flag&quot;, 2)<br><br><br># ----- usrloc params -----<br>modparam(&quot;usrloc&quot;, &quot;db_mode&quot;, 0)<br>#modparam(&quot;usrloc&quot;, &quot;db_mode&quot;, 1)<br>#modparam(&quot;usrloc&quot;, &quot;db_url&quot;, &quot;mysql://<a href="http://openser:openserrw@192.168.1.4/openser">openser:openserrw@192.168.1.4/openser</a>&quot;)<br>
#modparam(&quot;usrloc&quot;, &quot;use_domain&quot;, 1)<br><br># ----- auth params -----<br>modparam(&quot;auth&quot;, &quot;secret&quot;, &quot;secretphrase&quot;)<br><br># ----- auth_db params -----<br>#modparam(&quot;auth_db&quot;, &quot;calculate_ha1&quot;, yes)<br>
#modparam(&quot;auth_db&quot;, &quot;user_column&quot;, &quot;username&quot;)<br>#modparam(&quot;auth_db&quot;, &quot;password_column&quot;, &quot;password&quot;)<br>#modparam(&quot;auth_db&quot;, &quot;domain_column&quot;, &quot;domain&quot;)<br>
#modparam(&quot;auth_db&quot;, &quot;db_url&quot;, &quot;mysql://<a href="http://openser:openserrw@192.168.1.4/openser">openser:openserrw@192.168.1.4/openser</a>&quot;)<br>#modparam(&quot;auth_db&quot;, &quot;load_credentials&quot;, &quot;&quot;)<br>
<br># ----- alias_db params -----<br>/* uncomment the following lines if you want to enable the DB based<br>&nbsp;&nbsp; aliases */<br>#modparam(&quot;alias_db&quot;, &quot;db_url&quot;,<br>#&nbsp;&nbsp;&nbsp; &quot;mysql://<a href="http://openser:openserrw@192.168.1.3/openser_1_3">openser:openserrw@192.168.1.3/openser_1_3</a>&quot;)<br>
<br><br># ----- domain params -----<br>/* uncomment the following lines to enable multi-domain detection<br>&nbsp;&nbsp; support */<br>#modparam(&quot;domain&quot;, &quot;db_url&quot;,<br>#&nbsp;&nbsp;&nbsp; &quot;mysql://<a href="http://openser:openserrw@192.168.1.3/openser_1_3">openser:openserrw@192.168.1.3/openser_1_3</a>&quot;)<br>
#modparam(&quot;domain&quot;, &quot;db_mode&quot;, 1)&nbsp;&nbsp; # Use caching<br><br><br># ----- multi-module params -----<br>/* uncomment the following line if you want to enable multi-domain support<br>&nbsp;&nbsp; in the modules (dafault off) */<br>
#modparam(&quot;alias_db|auth_db|usrloc|uri_db&quot;, &quot;use_domain&quot;, 1)<br><br><br># ----- presence params -----<br>/* uncomment the following lines if you want to enable presence */<br>#modparam(&quot;presence|presence_xml&quot;, &quot;db_url&quot;,<br>
#&nbsp;&nbsp;&nbsp; &quot;mysql://<a href="http://openser:openserrw@192.168.1.3/openser_1_3">openser:openserrw@192.168.1.3/openser_1_3</a>&quot;)<br>#modparam(&quot;presence_xml&quot;, &quot;force_active&quot;, 1)<br>#modparam(&quot;presence&quot;, &quot;server_address&quot;, &quot;sip:<a href="http://192.168.1.2:5060">192.168.1.2:5060</a>&quot;)<br>
<br><br>####### Routing Logic ########<br><br><br># main request routing logic<br><br>route{<br><br>&nbsp;&nbsp;&nbsp; if (!mf_process_maxfwd_header(&quot;10&quot;)) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply(&quot;483&quot;,&quot;Too Many Hops&quot;);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; if (has_totag()) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # sequential request withing a dialog should<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # take the path determined by record-routing<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (loose_route()) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (is_method(&quot;BYE&quot;)) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(1); # do accouting ...<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(3); # ... even if the transaction fails<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(1);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /* uncomment the following lines if you want to enable presence */<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##if (is_method(&quot;SUBSCRIBE&quot;) &amp;&amp; $rd == &quot;your.server.ip.address&quot;) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; # in-dialog subscribe requests<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; route(2);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##}<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ( is_method(&quot;ACK&quot;) ) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ( t_check_trans() ) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # non loose-route, but stateful ACK; must be an ACK after a 487 or e.g. 404 from upstream server<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_relay();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # ACK without matching transaction ... ignore and discard.\n&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply(&quot;404&quot;,&quot;Not here&quot;);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; #initial requests<br><br>&nbsp;&nbsp;&nbsp; # CANCEL processing<br>&nbsp;&nbsp;&nbsp; if (is_method(&quot;CANCEL&quot;))<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (t_check_trans())<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_relay();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; t_check_trans();<br><br>&nbsp;&nbsp;&nbsp; # authenticate if from local subscriber (uncomment to enable auth)<br>&nbsp;&nbsp;&nbsp; ##if (!(method==&quot;REGISTER&quot;) &amp;&amp; from_uri==myself)<br>&nbsp;&nbsp;&nbsp; ##{<br>&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; if (!proxy_authorize(&quot;&quot;, &quot;subscriber&quot;)) {<br>
&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; proxy_challenge(&quot;&quot;, &quot;0&quot;);<br>&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; if (!check_from()) {<br>&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply(&quot;403&quot;,&quot;Forbidden auth ID&quot;);<br>&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>
&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; ##<br>&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; consume_credentials();<br>&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; # caller authenticated<br>&nbsp;&nbsp;&nbsp; ##}<br><br>&nbsp;&nbsp;&nbsp; # record routing<br>&nbsp;&nbsp;&nbsp; if (!is_method(&quot;REGISTER|MESSAGE&quot;))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; record_route();<br><br>&nbsp;&nbsp;&nbsp; # account only INVITEs<br>
&nbsp;&nbsp;&nbsp; if (is_method(&quot;INVITE&quot;)) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(1); # do accouting<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; if (!uri==myself)<br>&nbsp;&nbsp;&nbsp; /* replace with following line if multi-domain support is used */<br>&nbsp;&nbsp;&nbsp; ##if (!is_uri_host_local())<br>
&nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; append_hf(&quot;P-hint: outbound\r\n&quot;); <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # if you have some interdomain connections via TLS<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##if($rd==&quot;<a href="http://tls_domain1.net">tls_domain1.net</a>&quot;) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; t_relay(&quot;tls:<a href="http://domain1.net">domain1.net</a>&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##} else if($rd==&quot;<a href="http://tls_domain2.net">tls_domain2.net</a>&quot;) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; t_relay(&quot;tls:<a href="http://domain2.net">domain2.net</a>&quot;);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##}<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(1);<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; # requests for my domain<br><br>&nbsp;&nbsp;&nbsp; /* uncomment this if you want to enable presence server <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; and comment the next &#39;if&#39; block<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; NOTE: uncomment also the definition of route[2] from&nbsp; below */<br>&nbsp;&nbsp;&nbsp; ##if( is_method(&quot;PUBLISH|SUBSCRIBE&quot;))<br>&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(2);<br><br>&nbsp;&nbsp;&nbsp; if (is_method(&quot;PUBLISH&quot;))<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply(&quot;503&quot;, &quot;Service Unavailable&quot;);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp; if (is_method(&quot;REGISTER&quot;))<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # authenticate the REGISTER requests (uncomment to enable auth)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##if (!www_authorize(&quot;&quot;, &quot;subscriber&quot;))<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##{<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; www_challenge(&quot;&quot;, &quot;0&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##}<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##if (!check_to()) <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##{<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; sl_send_reply(&quot;403&quot;,&quot;Forbidden auth ID&quot;);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##}<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (!save(&quot;location&quot;))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_reply_error();<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; if ($rU==NULL) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # request with no Username in RURI<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply(&quot;484&quot;,&quot;Address Incomplete&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; # apply DB based aliases (uncomment to enable)<br>&nbsp;&nbsp;&nbsp; ##alias_db_lookup(&quot;dbaliases&quot;);<br><br>&nbsp;&nbsp;&nbsp; if (!lookup(&quot;location&quot;)) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; switch ($retcode) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case -1:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case -3:<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_newtran();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_reply(&quot;404&quot;, &quot;Not Found&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case -2:<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply(&quot;405&quot;, &quot;Method Not Allowed&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; # when routing via usrloc, log the missed calls also<br>&nbsp;&nbsp;&nbsp; setflag(2);<br><br>&nbsp;&nbsp;&nbsp; route(1);<br>
}<br><br><br>route[1] {<br>&nbsp;&nbsp;&nbsp; # for INVITEs enable some additional helper routes<br>&nbsp;&nbsp;&nbsp; if (is_method(&quot;INVITE&quot;)) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_on_branch(&quot;2&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_on_reply(&quot;2&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_on_failure(&quot;1&quot;);<br>
&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; if (!t_relay()) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_reply_error();<br>&nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; exit;<br>}<br><br><br><br># Presence route<br>/* uncomment the whole following route for enabling presence<br>&nbsp;&nbsp; NOTE: do not forget to enable the call of this route from the main<br>
&nbsp;&nbsp;&nbsp;&nbsp; route */<br>##route[2]<br>##{<br>##&nbsp;&nbsp;&nbsp; if (!t_newtran())<br>##&nbsp;&nbsp;&nbsp; {<br>##&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_reply_error();<br>##&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>##&nbsp;&nbsp;&nbsp; };<br>##<br>##&nbsp;&nbsp;&nbsp; if(is_method(&quot;PUBLISH&quot;))<br>##&nbsp;&nbsp;&nbsp; {<br>##&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; handle_publish();<br>
##&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_release();<br>##&nbsp;&nbsp;&nbsp; }<br>##&nbsp;&nbsp;&nbsp; else<br>##&nbsp;&nbsp;&nbsp; if( is_method(&quot;SUBSCRIBE&quot;))<br>##&nbsp;&nbsp;&nbsp; {<br>##&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; handle_subscribe();<br>##&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_release();<br>##&nbsp;&nbsp;&nbsp; }<br>##<br>##&nbsp;&nbsp;&nbsp; exit;<br>##}<br><br><br>branch_route[2] {<br>
&nbsp;&nbsp;&nbsp; xlog(&quot;new branch at $ru\n&quot;);<br>}<br><br><br>onreply_route[2] {<br>&nbsp;&nbsp;&nbsp; xlog(&quot;incoming reply\n&quot;);<br>}<br><br><br>failure_route[1] {<br>&nbsp;&nbsp;&nbsp; if (t_was_cancelled()) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; }<br><br>
&nbsp;&nbsp;&nbsp; # uncomment the following lines if you want to block client <br>&nbsp;&nbsp;&nbsp; # redirect based on 3xx replies.<br>&nbsp;&nbsp;&nbsp; ##if (t_check_status(&quot;3[0-9][0-9]&quot;)) {<br>&nbsp;&nbsp;&nbsp; ##t_reply(&quot;404&quot;,&quot;Not found&quot;);<br>
&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; ##}<br><br>&nbsp;&nbsp;&nbsp; # uncomment the following lines if you want to redirect the failed <br>&nbsp;&nbsp;&nbsp; # calls to a different new destination<br>&nbsp;&nbsp;&nbsp; ##if (t_check_status(&quot;486|408&quot;)) {<br>&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; sethostport(&quot;<a href="http://192.168.2.100:5060">192.168.2.100:5060</a>&quot;);<br>
&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; append_branch();<br>&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; # do not set the missed call flag again<br>&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; t_relay();<br>&nbsp;&nbsp;&nbsp; ##}<br>}<br><br><br><br><br><br><br><br>