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

Reply via email to