[asterisk-users] Workaround for bug in Linksys Firmware 6.1.3(a) (or greater)

Ryan Wagoner rswagoner at gmail.com
Tue Jun 22 18:31:21 CDT 2010


On Tue, Jun 22, 2010 at 6:26 PM, James Lamanna <jlamanna at gmail.com> wrote:
> On Tue, Jun 22, 2010 at 12:06 PM, Stefan Schmidt <sst at sil.at> wrote:
>> James Lamanna schrieb:
>>> If you've used Linksys phones against recent Asterisk 1.4.x you may
>>> have noticed
>>> that they may drop registration for a quick bit and then go back to being ok
>>> if your phone is behind NAT.
>>> If you turn Asterisk's sip debug information on, you'll probably find
>>> errors like these in your logs:
>>>
>>> NOTICE[30179] chan_sip.c: Correct auth, but based on stale nonce
>>> received from '"999911" <sip:999911 at 208.90.186.10>'
>>>
>>> I believe I have determined that this is caused by a bug in the
>>> Linksys firmware that is related to the NAT Keep-Alive packets.
>>> Because recent Asterisk 1.4.x's do not establish a SIP dialog for
>>> NOTIFY requests, the "489 Bad Event"
>>> replies were going back to the wrong address if your phone was behind NAT.
>>> This lack of reply would cause the next REGISTER message to use the
>>> same nonce as the previous REGISTER,
>>> resulting in the "stale nonce" errors and temporarily dropping
>>> registration. I've also seen the lack of response to
>>> the NAT keep-alive cause the phone to stop being able to register
>>> completely as well.
>>>
>>> Below I've posted a patch that responds with a 200 OK to these
>>> keep-alive requests, and I believe
>>> also solves the temporary loss of registration problem, though more
>>> testing in different environments
>>> for those who experience this problem would be greatly appreciated.
>>>
>>> The patch is against 1.4.32.
>>>
>>> -- James
>>>
>> Hello,
>>
>> you also just could set the NAT KEEP ALIVE MESSAGE on Ext 1 from $NOTIFY
>> to $OPTIONS and make this extension in your default context:
>> exten => s,1,hangup
>>
>> and you also would get a 200 ok for the keep alive package.
>>
>> IMHO a stale nonce would only occur when a user tries to register faster
>> than 3600s cause of the register timeout used in asterisk. Maybe you
>> should also try to set a higher register timeout on your phones. but i
>> dont have an 1.4 system running, only around 2k of linksys phones on a
>> 1.2.40 and 300 on 1.6.1.18 and i dont see this problem there.
>
> I'm not sure how this works.
> The OPTIONS message fails chan_sip.c:parse_request() so the OPTIONS
> message never gets processed.
> The options message I receive from a Linksys942 6.1.3(a) looks like this:
>
> <--- SIP read from xxx.xxx.xxx.xxx:8037 --->
> OPTIONS
> <------------->
>
> -- James
>
> --

I had the same result when using $OPTIONS on a SPA941 phone with
firmware 5.1.8. I am running Asterisk 1.6.2.9 that has the keep-alive
support, however I still see Asterisk sending a 489 Bad Event. I just
reopened the issue and provided the necessary debug log at
https://issues.asterisk.org/bug_view_page.php?bug_id=17379

Ryan



More information about the asterisk-users mailing list