Using opensips presence module (HEAD), our clients sometimes get out of order delivery of NOTIFY messages and/or dropped NOTIFY messages. The root cause is that opensips creates multiple, concurrent NOTIFY transactions for the same dialog. This failure could be avoided by queuing subsequent NOTIFY messages until response for prior message is received.
The full details: say opensips creates two concurrent NOTIFY transactions: A and B. The first transmission of A is lost in the network, then B is delivered to the client, and then a retransmission of A is delivered to the client. This is out of order: client gets B before A. Depend upon the client, it will either accept A and process it like normal, drop it A, or send a 500 response to A.
For full-state events like presence with "good" clients this is a benign failure. But for conference events (RFC4575) which is partial state, this is fatal.
The resip stack queues outgoing transaction messages to avoid this problem
See discussion: http://firstname.lastname@example.org/msg05638.html
Log in to post a comment.