<br><br>---------- Forwarded message ----------<br><span class="gmail_quote">From: <b class="gmail_sendername">frq ser</b> &lt;<a href="mailto:frq.ser@googlemail.com">frq.ser@googlemail.com</a>&gt;<br>Date: Dec 18, 2007 11:32 PM
<br>Subject: Newbie Problems: ser.cfg<br>To: <a href="mailto:serusers@iptel.org">serusers@iptel.org</a><br><br></span>
<div>Hi,</div>
<div><br>I am trying to understand the process flow in the following ser.cfg file, which controls a SER proxy server at <a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:root@ip.address:5060" target="_blank">
root@ip.address:5060</a>. I have added &quot;log()&quot; command at almost every step to see how things proceed. </div>
<p>The problem is that when I generate an OPTIONS message through SIPSAK (sipsak -T -vv -s sip:root@ip.address:5060), the process branches from route(0) to route(3), sends a message (200 Message received, probably from Sipsak), then comes back to route(0), completes this route, and then loops back to start of route(0) (as evident from the last log message &quot;Inside main route...&quot;). This is despite the &quot;break&quot; command in the main route block. Here&#39;s the output of the SER: 
</p>
<p>[root@drone08 ~]# ser&nbsp;<br>Listening on&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; udp: <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://192.168.3.208/" target="_blank">192.168.3.208</a> [<a onclick="return top.js.OpenExtLink(window,event,this)" href="http://192.168.3.208/" target="_blank">
192.168.3.208</a>]:5060&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcp: <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://192.168.3.208/" target="_blank">192.168.3.208</a> [<a onclick="return top.js.OpenExtLink(window,event,this)" href="http://192.168.3.208/" target="_blank">
192.168.3.208</a>]:5060&nbsp;<br>Aliases:&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcp: <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://192.168.3.208:5060/" target="_blank">192.168.3.208:5060</a>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; udp: <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://192.168.3.208:5060/" target="_blank">
192.168.3.208:5060</a>&nbsp;<br>&nbsp;<br>WARNING: no fork mode&nbsp;<br>stateless - initializing&nbsp;<br>&nbsp;0(0) Maxfwd module- initializing&nbsp;<br>&nbsp;0(0) INFO: udp_init: SO_RCVBUF is initially 107520&nbsp;<br>&nbsp;0(0) INFO: udp_init: SO_RCVBUF is finally 262142&nbsp; 
<br>&nbsp;2(0) INFO: fifo process starting: 5116<br>&nbsp;2(0) SER: open_uac_fifo: fifo server up at /tmp/ser_fifo...<br>&nbsp;2(0) WARNING: no fifo_db_url given - fifo DB commands disabled!<br>&nbsp;0(5114) Inside the main route....<br>&nbsp;0(5114) Inside the main route.... 
<br>&nbsp;0(5114) just passed the sanity checks...<br>&nbsp;0(5114) inside method-register...<br>&nbsp;0(5114) inside method-options...<br>&nbsp;0(5114) Inside route3...<br>&nbsp;0(5114) End of route3...<br>&nbsp;0(5114) just past redir-route3..<br>&nbsp;0(5114) Inside the main route.... 
</p>
<p>&nbsp;The corresponding SIPSAK output is:<br>&nbsp;C:\..Sipsak&gt;sipsak -v -T -s sip:root@192.168.3.208:5060<br>warning: IP extract from warning activated to be more informational<br>0: <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://192.168.3.208/" target="_blank">
192.168.3.208 </a>(0.000 ms) SIP/2.0 483 Too Many Hops<br>1: <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://192.168.3.208/" target="_blank">192.168.3.208</a> (0.000 ms) SIP/2.0 201 Options message received, probably from
<br>Sipsak<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; without Contact header</p>
<p><br>On the other hand, when I send an INVITE message, this problem doesn&#39;t happen. The process completes the main route and doesn&#39;t loop back (ie I don&#39;t get the &quot;Inside the main route...&quot; message). 
</p>
<p>[root@drone08 ~]# ser&nbsp;&nbsp;<br>Listening on&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; udp: <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://192.168.3.208/" target="_blank">192.168.3.208</a> [<a onclick="return top.js.OpenExtLink(window,event,this)" href="http://192.168.3.208/" target="_blank">
192.168.3.208</a>]:5060&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcp: <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://192.168.3.208/" target="_blank">192.168.3.208</a> [<a onclick="return top.js.OpenExtLink(window,event,this)" href="http://192.168.3.208/" target="_blank">
192.168.3.208</a>]:5060&nbsp;&nbsp;<br>Aliases:&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tcp: <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://192.168.3.208:5060/" target="_blank">192.168.3.208:5060</a>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; udp: <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://192.168.3.208:5060/" target="_blank">
192.168.3.208:5060</a>&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>WARNING: no fork mode&nbsp;&nbsp;<br>stateless - initializing&nbsp;&nbsp;<br>&nbsp;0(0) Maxfwd module- initializing&nbsp;&nbsp;<br>&nbsp;0(0) INFO: udp_init: SO_RCVBUF is initially 107520&nbsp;&nbsp;<br>&nbsp;0(0) INFO: udp_init: SO_RCVBUF is finally 262142&nbsp;&nbsp; 
<br>&nbsp;2(0) INFO: fifo process starting: 4860<br>&nbsp;2(0) SER: open_uac_fifo: fifo server up at /tmp/ser_fifo...<br>&nbsp;2(0) WARNING: no fifo_db_url given - fifo DB commands disabled!<br>&nbsp;0(4858) Inside the main route....<br>&nbsp;0(4858) just passed the sanity checks... 
<br>&nbsp;0(4858) inside method-register...<br>&nbsp;0(4858) outside methods-options...<br>&nbsp;0(4858) inside lookup-location...</p>
<p><br>All I want to know is that when I send an OPTIONS msg, why the process doesn&#39;t terminate at the break command in the (if (method == &quot;OPTIONS&quot;)) in the main route. Although it is not a critical problem, I just want to improve my understanding. I&#39;ll be glad if any of you could help. 
</p>
<p>Fr.</p>
<p>PS: The config file (ser.cfg) is given below: </p>
<p># $Id: hello-world.cfg 46 2006-01-25 04:21:30Z /CN=Paul <a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:Hazlett/emailAddress=paul@onsip.org" target="_blank">Hazlett/emailAddress=paul@onsip.org</a>
 $&nbsp;&nbsp;<br>debug=3&nbsp;&nbsp;<br>fork=no&nbsp;&nbsp;<br>log_stderror=yes&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>listen= <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://192.168.3.208/" target="_blank">192.168.3.208</a>&nbsp;&nbsp;#2.13<br>port=5060&nbsp;&nbsp;<br>children=4&nbsp;&nbsp;
<br>&nbsp;&nbsp;<br>dns=no&nbsp;&nbsp;<br>rev_dns=no&nbsp;&nbsp;<br>fifo=&quot;/tmp/ser_fifo&quot;&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>loadmodule &quot;/usr/local/lib/ser/modules/sl.so&quot;&nbsp;&nbsp; <br>loadmodule &quot;/usr/local/lib/ser/modules/tm.so&quot;&nbsp;&nbsp;<br>loadmodule &quot;/usr/local/lib/ser/modules/rr.so&quot;&nbsp;&nbsp;
<br>loadmodule &quot;/usr/local/lib/ser/modules/maxfwd.so&quot;&nbsp;&nbsp;<br>loadmodule &quot;/usr/local/lib/ser/modules/usrloc.so&quot;&nbsp;&nbsp; <br>loadmodule &quot;/usr/local/lib/ser/modules/registrar.so&quot;&nbsp;&nbsp;<br>&nbsp;&nbsp;<br># chg_rsf dec07&nbsp;&nbsp;
<br>#loadmodule &quot;/usr/local/lib/ser/modules/textops.so&quot;&nbsp;&nbsp;<br>#loadmodule &quot;/usr/local/lib/ser/modules/avpops.so&quot;&nbsp;&nbsp; <br>&nbsp;&nbsp;<br>modparam(&quot;usrloc&quot;, &quot;db_mode&quot;,&nbsp;&nbsp; 0)&nbsp;&nbsp;<br>modparam(&quot;rr&quot;, &quot;enable_full_lr&quot;, 1)&nbsp;&nbsp;
</p>
<p><br>#modparam(&quot;tm&quot;, &quot;pass_provisional_replies&quot;, 1)&nbsp;&nbsp;</p>
<p>route {&nbsp;&nbsp;<br>&nbsp;log(1, &quot;Inside the main route....\n&quot;);&nbsp;</p>
<p>&nbsp;# ------------------------------------------------------------------------&nbsp;<br>&nbsp;# Sanity Check Section&nbsp;<br>&nbsp;# ------------------------------------------------------------------------&nbsp;<br>&nbsp;if (!mf_process_maxfwd_header(&quot;10&quot;)) {&nbsp; 
<br>&nbsp;&nbsp;sl_send_reply(&quot;483&quot;, &quot;Too Many Hops&quot;);<br>&nbsp;&nbsp;break;<br>&nbsp;};&nbsp;</p>
<p>&nbsp;if (msg:len &gt; max_len) {&nbsp;<br>&nbsp;&nbsp;sl_send_reply(&quot;513&quot;, &quot;Message Overflow&quot;);<br>&nbsp;&nbsp;break;<br>&nbsp;};&nbsp;</p>
<p>&nbsp;log(3, &quot;just passed the sanity checks...\n&quot;);&nbsp;<br>&nbsp;<br>&nbsp;# ------------------------------------------------------------------------&nbsp;<br>&nbsp;# Record Route Section&nbsp;<br>&nbsp;# ------------------------------------------------------------------------&nbsp; 
<br>&nbsp;if (method!=&quot;REGISTER&quot;) {&nbsp;<br>&nbsp;&nbsp;record_route();<br>&nbsp;&nbsp;log(3, &quot;inside method-register...\n&quot;);<br>&nbsp;};&nbsp;</p>
<p>&nbsp;# ------------------------------------------------------------------------&nbsp;<br>&nbsp;# Loose Route Section&nbsp;<br>&nbsp;# ------------------------------------------------------------------------&nbsp;<br>&nbsp;if (loose_route()) {&nbsp;<br>&nbsp;&nbsp;log(3, &quot;inside loose route...\n&quot;); 
<br>&nbsp;&nbsp;route(1);<br>&nbsp;&nbsp;break;<br>&nbsp;};&nbsp;</p>
<p>&nbsp;# ------------------------------------------------------------------------&nbsp;<br>&nbsp;# Call Type Processing Section&nbsp;<br>&nbsp;# ------------------------------------------------------------------------&nbsp;<br>&nbsp;if (uri!=myself) {&nbsp;<br>
&nbsp;&nbsp;log(3, &quot;inside uri-myself...\n&quot;);<br>&nbsp;&nbsp;route(1);<br>&nbsp;&nbsp;break;<br>&nbsp;};&nbsp;</p>
<p>&nbsp;if (method==&quot;ACK&quot;) {&nbsp;<br>&nbsp;&nbsp;log(3, &quot;inside method-ack...\n&quot;);<br>&nbsp;&nbsp;route(1);<br>&nbsp;&nbsp;break;<br>&nbsp;}&nbsp;</p>
<p>&nbsp;else if (method==&quot;REGISTER&quot;) {&nbsp;<br>&nbsp;&nbsp;log(3, &quot;inside method-register...\n&quot;);<br>&nbsp;&nbsp;route(2);<br>&nbsp;&nbsp;break;<br>&nbsp;};&nbsp;</p>
<p>&nbsp;if (method==&quot;OPTIONS&quot;){&nbsp;<br>&nbsp;&nbsp;log(3, &quot;inside method-options...\n&quot;);<br>&nbsp;&nbsp;route(3);<br>&nbsp;&nbsp;log(3, &quot;just past redir-route3..\n&quot;);<br>&nbsp;&nbsp;break;<br>&nbsp;&nbsp;log(3, &quot;just past break...\n&quot;);<br>
&nbsp;};&nbsp;<br>&nbsp;log(3, &quot;outside methods-options...\n&quot;);&nbsp;</p>
<p>&nbsp;lookup(&quot;aliases&quot;);&nbsp;<br>&nbsp;if (uri!=myself) {&nbsp;<br>&nbsp;&nbsp;log(3, &quot;inside uri-myself 2....\n&quot;);<br>&nbsp;&nbsp;route(1);<br>&nbsp;&nbsp;break;<br>&nbsp;};&nbsp;</p>
<p>&nbsp;if (!lookup(&quot;location&quot;)) {&nbsp;<br>&nbsp;&nbsp;log(3, &quot;inside lookup-location...\n&quot;);<br>&nbsp;&nbsp;sl_send_reply(&quot;404&quot;, &quot;User Not Found&quot;);<br>&nbsp;&nbsp;break;<br>&nbsp;};&nbsp;</p>
<p>&nbsp;route(1);&nbsp;<br>}&nbsp;&nbsp;</p>
<p>route[1] {&nbsp;&nbsp;<br>&nbsp;# ------------------------------------------------------------------------&nbsp;<br>&nbsp;# Default Message Handler&nbsp;<br>&nbsp;# ------------------------------------------------------------------------&nbsp;<br>&nbsp;log(3, &quot;Inside route1...\n&quot;);&nbsp; 
<br>&nbsp;if (!t_relay()) {&nbsp;<br>&nbsp;&nbsp;sl_reply_error();<br>&nbsp;};&nbsp;<br>}&nbsp;&nbsp;</p>
<p>route[2] {&nbsp;&nbsp;<br>&nbsp;# ------------------------------------------------------------------------&nbsp;<br>&nbsp;# REGISTER Message Handler&nbsp;<br>&nbsp;# ------------------------------------------------------------------------&nbsp;<br>&nbsp;log(3, &quot;Inside route2...\n&quot;);&nbsp; 
<br>&nbsp;if (!save(&quot;location&quot;)) {&nbsp;<br>&nbsp;&nbsp;#sl_reply_error();<br>&nbsp;&nbsp;sl_send_reply(&quot;201&quot;, &quot;Register message received at Proxy Server&quot;);<br>&nbsp;};&nbsp;<br>}&nbsp;&nbsp;<br>route[3]{&nbsp;&nbsp;<br>&nbsp;# -----------------------------------------------------------------------&nbsp; 
<br>&nbsp;# OPTIONS Message Handler&nbsp;<br>&nbsp;# -----------------------------------------------------------------------&nbsp;<br>&nbsp;log(3, &quot;Inside route3...\n&quot;);&nbsp;<br>&nbsp;if (!t_relay()){&nbsp;<br>&nbsp;&nbsp;sl_reply_error();</p>
<p>&nbsp;};&nbsp;</p>
<p>&nbsp;sl_send_reply(&quot;201&quot;, &quot;Options message received, probably from Sipsak&quot;);&nbsp;<br>&nbsp;#forward(<a onclick="return top.js.OpenExtLink(window,event,this)" href="http://192.168.3.208/" target="_blank">192.168.3.208
</a>, 5070);&nbsp;<br>&nbsp;log(3, &quot;End of route3...\n&quot;);&nbsp;<br>&nbsp;#t_release();&nbsp; </p>
<p>}&nbsp;&nbsp;<br></p>