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
_______________________________________________
Devel mailing list
Devel@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/devel

Reply via email to