From the answer below, Olaf and Samuel don't seem to agree much ...
Let me attach some debug info, maybe you can see better through it than me. See attached files with debug corresponding to the first 200 OK and to the second ... I would like to think that SER actually does as Samuel said ... after the first 200 OK, all the other branches shall be automatically cancelled, thus not giving the other callees the option of sending more 200 OKs ...
On 8/3/07, samuel samu60@gmail.com wrote:
inline...
2007/8/3, Olaf Bergmann Olaf.Bergmann@freenet-ag.de:
Cesc Santa wrote:
I am doing some tests and it is not really a problem ... but maybe someone has a better idea. In my configuration, the first 200 OK received is forwarded to the caller and the whole SIP session setup (caller + 1st callee). Next 200 OKs are also delivered to the caller,
That is the correct behavior of a SIP proxy.
I think the proper forking behaviour is to send a CANCEL to all branches upon receiving a 200 from one of them and I think that SER does this automatically... isn't it??
who happily ignores them ...
That is broken behavior of a SIP UA.
I think it's not specified what to do when a UA receives a second 200 OK.... it can safely ignore it, it can present a mesage to the user, it can try to mix the different audio streams, it can create a second dialog and put the first on hold, and more options.
Try to look at HERP and "early media and forking" topics....
it is the task of the 2nd (and 3rd, ... ) callee to at a certain point give up and send a BYE, to which the caller replies with 481 no call leg ... It all works ... but, I wonder if ser could send CANCELs after receiving the 1st 200 OK ... if yes, how? :)
No, you cannot CANCEL an INVITE after having received a final response. This must be done by the caller after having sent the ACK. The UAC you have used is broken. The callee's UA tries to deal with it and does the best it can. You should use a standards-compliant SIP UA for your tests.
Hope I'm right though I think it should work "as it is" ;)
sam.