[OpenSIPS-Devel] [opensips] abandoned turn causes processes to sleep forever when handling retransmitted publishes (#754)

Eric Tamme notifications at github.com
Wed Jan 13 19:25:29 CET 2016


This exists on latest master 055f4b1 

Scenario:  2 PUBLISHES with the same E-Tag enter https://github.com/OpenSIPS/opensips/blob/master/modules/presence/presentity.c#L546 as a result of a retransmission.

The first publish finds the presentity, increments last turn to say 5 for the sake of argument, then it enters the while loop, finds the presentity and continues processing updating it with a new e-tag and saving it the db releases locks and finishes.

The second publish enters because its turn matches 5, it finds the presentity and increments last turn to 6, it then enters the while loop, but it fails to find the presentity because the E-Tag has been changed by the previous publish.  It continues processing, but it never increments turn before exiting.  

This causes turn to stay at 6, which will cause the process to lockup forever, waiting for its turn, on the next publish received.

---
Reply to this email directly or view it on GitHub:
https://github.com/OpenSIPS/opensips/issues/754
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/devel/attachments/20160113/9c69f9a0/attachment.htm>


More information about the Devel mailing list