<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://reviewboard.asterisk.org/r/1813/">https://reviewboard.asterisk.org/r/1813/</a>
     </td>
    </tr>
   </table>
   <br />


<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Asterisk Developers.</div>
<div>By Alec Davis.</div>


<p style="color: grey;"><i>Updated March 30, 2012, 3:32 p.m.</i></p>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Changes</h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">If each peer had a &#39;peer dialog container&#39;, then we&#39;d only have to iterate through the subscriptions for that peer, instead of iterating though all subscriptions on the system, as was previously being done.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description  (updated)</h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This issue is caused by review &quot;handle_request_subscribe is too slow cause of iterating through all sip dialogs&quot; https://reviewboard.asterisk.org/r/901/
commit http://svnview.digium.com/svn/asterisk?view=revision&amp;revision=289623



Some phones (Grandstream GXP20XX series 1.2.5.3 firmware) if rebooted, loose the BLF lights due to the new subscription&#39;s &quot;version&quot; being less than the previous subscription&#39;s &quot;version&quot;.
This happens the instant that asterisk timeouts the previous subscription - which has the much larger &quot;version&quot; sequence number.

The only way for the lights to start working again, is for the current subscription&#39;s &quot;version&quot; number to increment past the previous old &quot;version&quot; number.
That period of time could be huge, if the phone isn&#39;t rebooted for days.

The workaround has been to reboot the phone twice, within a few minutes of each reboot.
  1st time wait for the BLF&#39;s to fail (then reboot again) - which is the timeout period - a few minutes.
  2nd time the lights will work, then fail, then after a few minutes start working again.

This fix prevents the old subscription timeout from updating the phones &quot;version&quot; number. 

This issue doesn&#39;t affter the GXP21XX series.

Attempt to show issue byway of example below with some debug output showing call-id and version number.

astrid-test*CLI&gt; core show hints

    -= Registered Asterisk Dial Plan Hints =-
            8601GXP0001@trusted             : Custom:q8601_a8612    State:InUse           Watchers  1
Debug output:

===Set the BLF state to InUse
- Executing [s@macro-custom-agent-inout:13] Set(&quot;SIP/GXP0001-00000005&quot;, &quot;DEVICE_STATE(Custom:q8601_a8612)=INUSE&quot;) in new stack
...
[Mar 14 11:01:39] NOTICE[10819]: chan_sip.c:13136 state_notify_build_xml: ALEC &lt;dialog id=&quot;8601GXP0001&quot; call-id=&quot;3c65aed02ae1d5df@192.168.5.141&quot;&gt; version=5

=============
Reboot the phone, it gets a new BLF subscription.
=============
[Mar 14 11:02:30] NOTICE[10826]: chan_sip.c:13136 state_notify_build_xml: ALEC &lt;dialog id=&quot;8601GXP0001&quot; call-id=&quot;79956c0168125400@192.168.5.141&quot;&gt; version=0
===The BLF has correct state of InUse.

...
[Mar 14 11:05:00] NOTICE[10826]: chan_sip.c:13136 state_notify_build_xml: ALEC &lt;dialog id=&quot;8601GXP0001&quot; call-id=&quot;79956c0168125400@192.168.5.141&quot;&gt; version=1
===The BLF still has correct state of InUse.

...
The timeout &#39;last notification&#39;
[Mar 14 11:05:09] NOTICE[10826]: chan_sip.c:13131 state_notify_build_xml: ALEC &lt;dialog id=&quot;8601GXP0001&quot; call-id=&quot;3c65aed02ae1d5df@192.168.5.141&quot; direction=&quot;recipient&quot;&gt; version=6
[Mar 14 11:05:09] NOTICE[10826]: chan_sip.c:3868 __sip_autodestruct: ALEC TIMEOUT of SIP subscription 3c65aed02ae1d5df@192.168.5.141
===The BLF has incorrectly gone Idle.

...
[Mar 14 11:15:01] NOTICE[10826]: chan_sip.c:13136 state_notify_build_xml: ALEC &lt;dialog id=&quot;8601GXP0001&quot; call-id=&quot;79956c0168125400@192.168.5.141&quot;&gt; version=5
===The BLF is still incorrect at Idle.

    -- Registered SIP &#39;GXP0001&#39; at 192.168.5.141:5066
[Mar 14 11:17:31] NOTICE[10826]: chan_sip.c:13136 state_notify_build_xml: ALEC &lt;dialog id=&quot;8601GXP0001&quot; call-id=&quot;79956c0168125400@192.168.5.141&quot;&gt; version=6
===The BLF now has correct state of InUse.
</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">In place on a 1.8 deployment for months, our production box with ~80 GXP phones, half of which are the older GXP20XX series.
</pre>
  </td>
 </tr>
</table>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>trunk/channels/chan_sip.c <span style="color: grey">(358608)</span></li>

</ul>

<p><a href="https://reviewboard.asterisk.org/r/1813/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>




  </div>
 </body>
</html>