[asterisk-bugs] [JIRA] (ASTERISK-30193) chan_pjsip should return all codecs on a re-INVITE without SDP
Henning Westerholt (JIRA)
noreply at issues.asterisk.org
Fri Aug 26 03:48:09 CDT 2022
Henning Westerholt created ASTERISK-30193:
---------------------------------------------
Summary: chan_pjsip should return all codecs on a re-INVITE without SDP
Key: ASTERISK-30193
URL: https://issues.asterisk.org/jira/browse/ASTERISK-30193
Project: Asterisk
Issue Type: Bug
Security Level: None
Components: Channels/chan_pjsip
Affects Versions: 16.25.3
Environment: Linux
Reporter: Henning Westerholt
Severity: Major
h2. Description
Currently chan_pjsip on receiving a re-INVITE without SDP will only return the codecs that are previously negotiated and not offering all enabled codecs.
This causes interoperability issues with different equipment (e.g. from Cisco) for some of our customers and probably also in other scenarios involving 3PCC infrastructure.
h2. Standard reference
The RFC 3261 states that a UAS SHOULD behave as it would be a new call, i.e. returning all available codecs.
h3. RFC 3261 section 14.2:
{quote}
"A UAS providing an offer in a 2xx (because the INVITE did not contain an
offer) SHOULD construct the offer as if the UAS were making a brand new
call, subject to the constraints of sending an offer that updates an
existing session, as described in \[13\] in the case of SDP. Specifically,
this means that it SHOULD include as many media formats and media types that the UA is willing to support."
{quote}
Further relevant RFC quotes can be found in the following discussing [link|https://lists.cs.columbia.edu/pipermail/sip-implementors/2016-January/030448.html]
h2. Other material
An old discussion with community members can be found at this [link|https://community.asterisk.org/t/pjsip-re-invite-without-sdp-codec-negotiation/75935]
h2. Proposed solution
I want to propose a new configuration option to configure this behaviour:
*all_codecs_on_empty_reinvite*
I have created a patch against asterisk 16 to implement this option and functionality and will submit it in Gerrit for further review.
In my opinion the mentioned option should be enabled by default, but of course due to the large installed base that could expect a different behaviour you might have another opinion in this regards.
h2. Tests
h3. General
The patch has been tested on a test system and will be also included in our customer installation(s).
h3. Test traces
I have reproduced SIP traces below. The output with disabled parameter is the current behaviour, here it shows only the currently used codecs. In the output with enabled parameter I've configured 4 codecs on the asterisk, to easily spot the difference.
h4. Output from Test System with enabled parameter:
{noformat}
2022/08/10 12:56:33.769294 YYY.ZZZ.64.8:5096 -> YYY.ZZZ.79.29:5065
INVITE sip:YYY.ZZZ.79.29:5065 SIP/2.0
Via: SIP/2.0/UDP YYY.ZZZ.64.8:5096;rport;branch=z9hG4bKPjpA51QDMeluT1Lt3ST2CquLXhocD74i.v
Max-Forwards: 70
From: sip:1101 at kam03.tst.nbg.domain.com;tag=.5BjZZ3xdAW93NStuwDVXfjXsSftFLJy
To: sip:1100 at kam03.tst.nbg.domain.com;tag=31142ded-bcc6-43b1-9d2a-ed4c646da437
Contact: <sip:1101 at YYY.ZZZ.64.8:5096;ob>
Call-ID: yy8jj3ktcypN3z75pmxuh9kvKj89JPfa
CSeq: 8980 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800;refresher=uac
Min-SE: 90
User-Agent: PJSUA v2.9 Linux-5.4.0.122/x86_64/glibc-2.31
Content-Length: 0
2022/08/10 12:56:33.771150 YYY.ZZZ.79.29:5065 -> YYY.ZZZ.64.8:5096
SIP/2.0 200 OK
Via: SIP/2.0/UDP YYY.ZZZ.64.8:5096;rport=5096;received=YYY.ZZZ.64.8;branch=z9hG4bKPjpA51QDMeluT1Lt3ST2CquLXhocD74i.v
Call-ID: yy8jj3ktcypN3z75pmxuh9kvKj89JPfa
From: <sip:1101 at kam03.tst.nbg.domain.com>;tag=.5BjZZ3xdAW93NStuwDVXfjXsSftFLJy
To: <sip:1100 at kam03.tst.nbg.domain.com>;tag=31142ded-bcc6-43b1-9d2a-ed4c646da437
CSeq: 8980 INVITE
Session-Expires: 1800;refresher=uac
Require: timer
Contact: <sip:YYY.ZZZ.79.29:5065>
Allow: OPTIONS, REGISTER, SUBSCRIBE, NOTIFY, PUBLISH, INVITE, ACK, BYE, CANCEL, UPDATE, PRACK, MESSAGE, REFER
Supported: 100rel, timer, replaces, norefersub
Server: Asterisk PBX 16.25.3
Content-Type: application/sdp
Content-Length: 317
v=0
o=- 3869124992 3869124996 IN IP4 YYY.ZZZ.79.29
s=Asterisk
c=IN IP4 YYY.ZZZ.79.29
t=0 0
m=audio 10676 RTP/AVP 9 0 107 97 96
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:107 opus/48000/2
a=rtpmap:97 speex/8000
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-16
a=ptime:20
a=maxptime:60
a=sendrecv
{noformat}
h4. Output from Test System with disabled parameter:
{noformat}
2022/08/10 12:50:31.522677 YYY.ZZZ.64.8:5096 -> YYY.ZZZ.79.29:5065
INVITE sip:YYY.ZZZ.79.29:5065 SIP/2.0
Via: SIP/2.0/UDP YYY.ZZZ.64.8:5096;rport;branch=z9hG4bKPji1l8qrazPZUb87Yh.3Auw7sapFxz85j.
Max-Forwards: 70
From: sip:1101 at kam03.tst.nbg.domain.com;tag=ywbuXOEtb2GuhOYgSwbXvKfIMOwvFR6j
To: sip:1100 at kam03.tst.nbg.domain.com;tag=fec38f0d-e41e-43ff-a801-3ba74fcafeb1
Contact: <sip:1101 at YYY.ZZZ.64.8:5096;ob>
Call-ID: k4KYt0RyHxmqBF79gMQm2mrERAl80vS3
CSeq: 2596 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800;refresher=uac
Min-SE: 90
User-Agent: PJSUA v2.9 Linux-5.4.0.122/x86_64/glibc-2.31
Content-Length: 0
2022/08/10 12:50:31.524108 YYY.ZZZ.79.29:5065 -> YYY.ZZZ.64.8:5096
SIP/2.0 200 OK
Via: SIP/2.0/UDP YYY.ZZZ.64.8:5096;rport=5096;received=YYY.ZZZ.64.8;branch=z9hG4bKPji1l8qrazPZUb87Yh.3Auw7sapFxz85j.
Call-ID: k4KYt0RyHxmqBF79gMQm2mrERAl80vS3
From: <sip:1101 at kam03.tst.nbg.domain.com>;tag=ywbuXOEtb2GuhOYgSwbXvKfIMOwvFR6j
To: <sip:1100 at kam03.tst.nbg.domain.com>;tag=fec38f0d-e41e-43ff-a801-3ba74fcafeb1
CSeq: 2596 INVITE
Session-Expires: 1800;refresher=uac
Require: timer
Contact: <sip:YYY.ZZZ.79.29:5065>
Allow: OPTIONS, REGISTER, SUBSCRIBE, NOTIFY, PUBLISH, INVITE, ACK, BYE, CANCEL, UPDATE, PRACK, MESSAGE, REFER
Supported: 100rel, timer, replaces, norefersub
Server: Asterisk PBX 16.25.3
Content-Type: application/sdp
Content-Length: 236
v=0
o=- 3869124630 3869124634 IN IP4 YYY.ZZZ.79.29
s=Asterisk
c=IN IP4 YYY.ZZZ.79.29
t=0 0
m=audio 29398 RTP/AVP 9 96
a=rtpmap:9 G722/8000
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-16
a=ptime:20
a=maxptime:150
a=sendrecv
{noformat}
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list