Re: [reSIProcate] [DUM] Sending multiple 18x messages with different SDP bodies
Thanks Scott,
I wasn't aware that this was not legal SIP (outside of PRACK et al.).
By looking at my problem again I also realized that I do not need to
change the SDP, this was my bad.
Since hasLocalOfferAnswer() seems to return true once provideAnswer
has been called, I can simply only call ::provisional(18x, true)
without calling provideAnswer if I need to send another provisional.
Again thanks a lot,
Francis
On Thu, Oct 27, 2011 at 10:38 AM, Scott Godin <sgodin@xxxxxxxxxxxxxxx> wrote:
> Hi Francis,
> It's no legal to send different SDP in 180 responses. In fact the SDP you
> send in the 180 must match the SDP sent in the 200 (DUM ensures this). If
> you want to use multiple SDP offer/answer negotiations before the call is
> answered you must either use PRACK and UPDATE messaging. DUM does not fully
> support either of these methods right now.
>>Also, would there be an API to query whether the UAS session has been
>>already provided an answer or not (I found hasLocalOfferAnswer but
>>haven't tried it yet)?
> Try this:
> ServerInviteSession* sis =
> dynamic_cast<ServerInviteSession*>(mInviteSessionHandle.get());
> if(sis && !sis->isAccepted())
> {
> sis->accept(200);
> ...
> Scott
>
> On Thu, Oct 27, 2011 at 10:22 AM, Francis Joanis <francis.joanis@xxxxxxxxx>
> wrote:
>>
>> Hi,
>>
>> (this related to 1.7, I haven't tried it on the main yet)
>>
>> I have quick question regarding the following scenario for a DUM UAS:
>>
>> - INVITE received w/ SDP
>> - 100 sent
>> - 18x sent w/ SDP A (using InviteSession::provideAnswer / provisional)
>> - ...
>> - 18x sent w/ SDP B (using InviteSession::provideAnswer / provisional)
>> - assert(0)
>>
>> I am using the provideAnswer API to set the answer to be sent with the
>> first 18x message. However, after the first provisional is sent, the
>> UAS state changes from UAS_EarlyOffer to UAS_EarlyProvidedAnswer. When
>> I then try to send the second provisional, still using provideAnswer,
>> the code hits an assertion (in ServerInviteSession::provideAnswer)
>> since an answer had already been provided. Note that the SDP in the 2
>> provisionals is not the same (i.e. I need to change it).
>>
>> In that case, should provideOffer be used on the second provisional?
>> Also, would there be an API to query whether the UAS session has been
>> already provided an answer or not (I found hasLocalOfferAnswer but
>> haven't tried it yet)?
>>
>> Thanks,
>> Francis
>> _______________________________________________
>> resiprocate-devel mailing list
>> resiprocate-devel@xxxxxxxxxxxxxxx
>> https://list.resiprocate.org/mailman/listinfo/resiprocate-devel
>
>