[asterisk-bugs] [Asterisk 0010052]: NOTIFY race condition when state changes happen very fast
noreply at bugs.digium.com
noreply at bugs.digium.com
Wed Nov 28 10:17:58 CST 2007
A NOTE has been added to this issue.
======================================================================
http://bugs.digium.com/view.php?id=10052
======================================================================
Reported By: raarts
Assigned To: file
======================================================================
Project: Asterisk
Issue ID: 10052
Category: Channels/chan_sip/Registration
Reproducibility: always
Severity: minor
Priority: normal
Status: assigned
Asterisk Version: 1.2.19
SVN Branch (only for SVN checkouts, not tarball releases): N/A
SVN Revision (number only!):
Disclaimer on File?: Yes
Request Review:
======================================================================
Date Submitted: 06-25-2007 08:47 CDT
Last Modified: 11-28-2007 10:17 CST
======================================================================
Summary: NOTIFY race condition when state changes happen very
fast
Description:
This particular problem was encountered with SNOM360 phones, but it is not
specific to it.
What happens:
- SNOM has subscribed a LED to another phone
- SNOM user dials this other phone.
- dialplan adds an answer-after=0 SIP header.
- asterisk send INVITE to the other phone
- other phone send back RINGING, this is sent back to the SNOM as well
- asterisk send NOTIFY 'early' to the SNOM
- meanwhile, the other phone answers very quickly
- asterisk sends OK to INVITE to SNOM to indicate the other phone
has answered the line, and immediately after that, a NOTIFY 'confirmed'.
At this point in time the OK to the previous NOTIFY 'early' has not
been sent yet by the SNOM.
Now the system is confused, because the SNOM finally sends the OK
to the NOTIFY 'early', but asterisk is only expecting an OK to the
last sent NOTIFY, and starts retrying. See attached trace.
I think asterisk should not sent a new NOTIFY. I think ideally NOTIFY's
should be queued on a per-channel basis. Or should asterisk remember
earlier
======================================================================
----------------------------------------------------------------------
one47 - 11-28-07 10:17
----------------------------------------------------------------------
You are probably right about unforseen consequences, thought I had a
thorough look at the code, and I had more of a problem with the broken
"ignore a request" behaviour than with calling the handle-response code,
which certainly seems to understand the concept of an old transaction.
Particularly when the patch is so trivial!
Delete old notify transactions??? I suppose... Seems a bit nasty to me
though when there appears to be an opportuninity to behave "correctly" :-P
There may be other cases that you need to handle specially for other
response types too.
Just my 2p.
And yes, CSeq and notify version number!!! These phones really could do
better sometimes :)
Issue History
Date Modified Username Field Change
======================================================================
11-28-07 10:17 one47 Note Added: 0074483
======================================================================
More information about the asterisk-bugs
mailing list