Merged revisions 205804 via svnmerge from
authorDavid Vossel <dvossel@digium.com>
Fri, 10 Jul 2009 16:42:04 +0000 (16:42 +0000)
committerDavid Vossel <dvossel@digium.com>
Fri, 10 Jul 2009 16:42:04 +0000 (16:42 +0000)
commitfe493cf85e12eadad8406f45ac7a4d36240555dd
treee7a1af8ba72060320113b104ba9f4a52fbc62bfa
parent44af00a28f4e02e035039805d82edc4677165cfa
Merged revisions 205804 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r205804 | dvossel | 2009-07-10 11:23:59 -0500 (Fri, 10 Jul 2009) | 31 lines

  SIP registration auth loop caused by stale nonce

  If an endpoint sends two registration requests in a very short
  period of time with the same nonce, both receive 401 responses
  from Asterisk, each with a different nonce (the second 401
  containing the current nonce and the first one being stale).
  If the endpoint responds to the first 401, it does not match
  the current nonce so Asterisk sends a third 401 with a newly
  generated nonce (which updates the current nonce)... Now if
  the endpoint responds to the second 401, it does not match the
  current nonce either and Asterisk sends a fourth 401 with a
  newly generated nonce... This loop goes on and on.

  There appears to be a simple fix for this.  If the nonce from
  the request does not match our nonce, but is a good response
  to a previous nonce, instead of sending a 401 with a newly
  generated nonce, use the current one instead.  This breaks
  the loop as the nonce is not updated until a response is
  received. Additional logic has been added to make sure no
  nonce can be responded to twice though.

  (closes issue #15102)
  Reported by: Jamuel
  Patches:
        patch-bug_0015102 uploaded by Jamuel (license 809)
        nonce_sip.diff uploaded by dvossel (license 671)
  Tested by: Jamuel

  Review: https://reviewboard.asterisk.org/r/289/
........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@205840 65c4cc65-6c06-0410-ace0-fbb531ad65f3
channels/chan_sip.c