< Previous by Date Date Index Next by Date >
  Thread Index Next in Thread >

[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.