[reSIProcate] Multiple provisional with the same SDP: bug or feature?
Hi,
We have a B2BUA based on resiprocate and we noticed that if the "c" leg (the
one we call out to) sends a 183 with SDP and then a 180 without, we pass the
"a" leg (the one originated the call) the 180 with the SDP from the 183
included. This is not the desired behaviour, since there are some 3rd party
devices that doesn't seem to tolerate this.
This happens because we call ServerInviteSession's provide[Answer|Offer]()
before calling provisional() for the 183, and then calling provisional() for
the 180, and have no way of telling resiprocate not to include the SDP. The
problem is that according to the comments in ServerInviteSession.hxx it is not
necessary:
/** Called to set the offer that will be used in the next message that
sends an offer. [...] */
virtual void provideOffer(const SdpContents& offer);
(same with provideAnswer)
We interpreted it as "the next and only the next" message will include the
SDP, but the code doesn't do that way. Is that the correct behaviour? If it's
a bug, which way should I look for solution? Should we empty the
mCurrentLocalSdp & mProposedLocalSdp after sending it? Should we transition to
a state that doesn't call setSdp() in sendProvisional() (which state?)
Any help is appreciated!
TIA
br
Szo