Alex Hermann wrote:
Hello,
Situation is :
UAC -> Asterisk1 -> OpenSER -> Asterisk2
OpenSER is using tm module (t_relay and friends).
When the UAC cancels an INVITE, the CANCEL is propagated to Asterisk2 which
replies to the INVITE with a 487 and to the CANCEL with 200 OK. Both replies
have the same ToTag, as rfc3261 9.2 suggests (SHOULD). The 487 reply is
forwarded to Asterisk1 by OpenSER with the ToTag unaltered, but the 200 OK is
forwarded as "200 cancelling" with a different ToTag (created by OpenSER).
This messes up the transaction matching on Asterisk1 (which uses pedantic=yes
in the sip.conf and has to stay that way)
Asterisk's transaction matching is broken - regardless of the pedantic
setting. With this option you can only choose between different bugs ;-)
Is there a way to force OpenSER to use the ToTag of
the incoming reply (the
winning branch?) instead of it creating a new one?
I do not think so, because the CANCEL is hop by hop and the 200 OK the
the CANCEL will be produced before the 487 is relayed.
regards
klaus