[asterisk-dev] Asterisk 16 / pjsip: actual SDP handling in case of late offer during outbound call seems to break call
Michael Maier
m1278468 at mailbox.org
Fri Aug 9 14:16:41 CDT 2019
Am 09.08.19 um 20:09 schrieb Joshua C. Colp:
> On Fri, Aug 9, 2019, at 2:58 PM, Michael Maier wrote:
>
> <snip>
>
>>
>> I think I probably realized now the real problem of the wrong SDP
>> session version: Based on this patch
>>
>> diff -urN asterisk-16.3.0.orig/res/res_pjsip/pjsip_message_filter.c
>> asterisk-16.3.0/res/res_pjsip/pjsip_message_filter.c
>> --- asterisk-16.3.0.orig/res/res_pjsip/pjsip_message_filter.c
>> 2019-04-04 16:49:57.000000000 +0200
>> +++ asterisk-16.3.0/res/res_pjsip/pjsip_message_filter.c
>> 2019-06-18 14:46:57.784000000 +0200
>> @@ -341,6 +341,10 @@
>> }
>> }
>>
>> + /* set new sdp version */
>> + ast_debug(5, "increment SDP version, starting from
>> %x\n",sdp->origin.version);
>> + sdp->origin.version+=1;
>> +
>> pjsip_tx_data_invalidate_msg(tdata);
>> }
>>
>> ---------------------------------------------------------------------------------------------------------------------------
>>
>> I detected, that the starting point is wrong during the following call
>> to the provider:
>>
>>
>> INVITE / SDP session version starts at 0x1c91867
>> INVITE + AUTH / SDP session version starts at 0x1C91868 (this is ok)
>>
>> ReInvite 1 from Provider
>> OK ReInvite / SDP session version starts at 0x1C91867 (this is not ok
>> - should start at 0x1C91869 and not from beginning)
>>
>> ReInvite 2 from Provider
>> OK ReInvite / SDP session version starts at 0x1C91867 (this is not ok
>> - should start at 0x1C91870 and not from beginning)
>>
>> Seems, that asterisk uses for the 200 OKs the initial session, starting
>> at the first INVITE instead of using the session data based on the
>> INVITE + AUTH.
>> Or is there my patch broken?
>
> I don't really understand your question.
What I'm trying to say, is, that during the call, consisting of an INVITE, INVITE + AUTH (after proxy auth request of ISP), ReInvite 1 from ISP
and ReInvite 2 from ISP, asterisk encounters a session problem, because it reuses the old session data of the beginning for the ReInvites
instead of continuously continuing with the session data reached after the INVITE + AUTH and so on.
> I don't think the patch is the true fix, it's just a convenient place to increment it.
That's true - but there seems to be a session issue because there is always the same SDP version as base - and not the previously increased one
(besides between INVITE and INVITE + AUTH)
Let me show it on a table
real SDP expected SDP
Request startversion with patch startversion with patch
INV 1 1
INV + AUTH 2 2
ReInv 1 OK 1 3
ReInv 2 OK 1 4
Thanks
Michael
More information about the asterisk-dev
mailing list