<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif; "><div><div><div>Hi all,</div></div></div><span id="OLK_SRC_BODY_SECTION"><div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif; "><span id="OLK_SRC_BODY_SECTION"><div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif; "><div><div><div><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre">        </span>We are seeing a situation on all of our FreeSWITCH instances where OPTIONS pings are happening at an interval of about 45 seconds. I
 was expecting these to fire roughly every 30.</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre">        </span>I looked at sofia_reg.c to see when&nbsp;sofia_reg_nat_callback() gets kicked off and it's fired from within the sofia_reg_check_expire,
 which is fired from within the&nbsp;sofia_profile_worker_thread_run() thread.</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre">        </span>If I'm understanding the loop inside the sofia profile worker thread correctly, it pops requests off the SQL stack to process them in
 batch, then runs the sofia watchdog code to see if sofia is behaving, then if the number of iterations is above IREG_SECONDS constant it fires off the registration check in the database (which also kicks off options pings). IREG_SECONDS seems to be set at
 30…</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre">        </span>mod_sofia.h:</div><div><div><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre">        </span>#define IREG_SECONDS 30</div></div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre">        </span>The word &quot;seconds&quot; would make me think it should fire reliably every &#43;/- 30 seconds. But it's firing every 45. The system isn't really that busy otherwise IMHO. So I am perplexed if the math is
 just wrong in this loop or if I'm misunderstanding this code.</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre">        </span>I'm trying to figure out how the timer is counted, looks like it's tied to the microseconds of the current clock so this should be pretty accurate, busy or not busy:</div><div><div><br></div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; switch_interval_time_t sleepy_time = !statements ? 1000000 : switch_micro_time_now() - last_commit - profile-&gt;trans_timeout*1000;</div><div><br></div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (sleepy_time &lt; 1000 || sleepy_time &gt; 1000000) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sleepy_time = 1000;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div><div><br></div></div><div><br></div><div>What am I missing here…? Just looking for root cause possibilities, happy to poke around at some settings before mucking up the code with debug statements and the like…</div><div><br></div><div>- Darren Schreiber</div></div></div><div><br></div></div></div></span></div></div></span></body></html>