[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