Hi,
I have this setup: a B2BUA and a mediaserver, based on SEMS.
The SEMS sends a REFER to the B2BUA which starts to send NOTIFYs according to
the progress of the REFERred call: for example: 100, 183,. 180, 200. One of
the NOTIFY gets lost on the network, lets say the 183, then it's
retransmitted, but before the retransmittion, the 180 is sent and replied:
100->
<--OK(100)
183->
...
180->
<-OK(180)
183(r)->
<-500
(the B2BUA terminates the subscription here)
So the SEMS refuses the retransmitted 183 NOTIFY, because it's cseq is smaller
than the 180's. The SEMS code references the 12.2.2 section of the RFC, I
presume this part:
"
If the remote sequence number was not empty, but the sequence number
of the request is lower than the remote sequence number, the request
is out of order and MUST be rejected with a 500 (Server Internal
Error) response.
"
https://tools.ietf.org/html/rfc3261#section-12.2.2
I guess one of the peers behaviour is wrong, otherwise any random hickup could
terminate the subscription. Which one is the correct behaviour?
Also, since the 500 is generated by the AmSipDialog, with reply_error(), which
doesn't call onReplySent(), my application has no way of knowing something
went wrong, and it's statemachine falls apart.
Is there any particular reason reply_error() shouldn't call onReplySent()?
Thank you!
br
Szo
_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev