#361 presence: PUBLISH race leads to out of order NOTIFY

1.6.x
open
nobody
modules (454)
5
2011-03-11
2011-03-11
Ovidiu Sas
No

When two PUBLISH requests are received one after each other, it may happen that the second received PUBLISH will generate a NOTIFY before the first received PUBLISH is able to generate it's NOTIFY.

The normal behavior is like this:

--PUBLISH(1)-->|--NOTIFY(1)(Cseq=N)-->
--PUBLISH(2)-->|--NOTIFY(2)(Cseq=N+1)-->

Under the race condition, it lloks like this:

--PUBLISH(1)-->|--NOTIFY(2)(Cseq=N)-->
--PUBLISH(2)-->|--NOTIFY(1)(Cseq=N+1)-->

This leads to an inconsistent client notification.

Regards,
Ovidiu Sas

Discussion