[reSIProcate] Sending 183 with offer after an INVITE without offer
Hi all,
I'm currently having some trouble trying to implement the sending of a 183
response with an offer after an INVITE without offer.
The behaviour I'm looking for is the following (from RFC 3262 PRACK) :
Client Server
| INVITE (no offer) |
| -----------------------> |
| |
| 183 (offer) |
| <-------------------- |
| |
| PRACK (answer) |
| ----------------------> |
| |
| 200 OK (PRACK) |
| <------------------ |
| |
| 200 OK (INVITE) |
| <------------------ |
Basically, my starting point was the BasicCall example, with resiprocate 1.0.2.
Taking a look to the resip-devel archives, I first tried this code in my UAS
(which seems to work in the INVITE with offer case) :
virtual void onOfferRequired(InviteSessionHandle, const SipMessage& msg)
{
…
SdpContents *sdpOffer = new SdpContents(sdpOfferHfv, sdpOfferType);
mSis->provisional(183);
mSis->provideAnswer(*sdpOffer);
}
But, as my UAS current state is UAS_NoOffer, an assert crashes in
ServerInviteSession.cxx.
A simple call to
mSis->provideOffer(*sdpOffer)
leads to a 100 Trying emission, and a transition to the UAS_ProvidedOffer
state, but nothing that could help me to get the required behaviour.
I've already noticed that this functionality has been tested by the past
according to the archives. But I really don't find the right code sequence to
implement this in my UAS. Can someone help me ?
Thanks in advance,
Antoine.