[Home]

Summary:ASTERISK-29268: Format Attribute Modules: Parameter Names are Case-Insensitive
Reporter:Alexander Traud (traud)Labels:patch
Date Opened:2021-01-28 10:07:15.000-0600Date Closed:
Priority:MajorRegression?
Status:Open/NewComponents:Resources/res_format_attr_celt Resources/res_format_attr_h263 Resources/res_format_attr_h264 Resources/res_format_attr_opus Resources/res_format_attr_silk Resources/res_format_attr_siren14 Resources/res_format_attr_siren7 Resources/res_format_attr_vp8
Versions:13.38.1 16.16.0 18.2.0 Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) res_format_attr_13.patch
( 1) res_format_attr_17.patch
Description:[RFC 4855|https://tools.ietf.org/html/rfc4855#page-7]:
bq. parameter names are case-insensitive both in media type strings and in the default mapping to the SDP a=fmtp attribute.

Format attribute modules parse ‘a=fmtp’ of a media format like H.263+. Those format parameters are offered by the originating call (leg) caller. Then, Asterisk generates a line ‘a=fmtp’. That is presented to the outgoing call leg (callee). Currently, all modules are expecting the parameter names in lower case. Except the module for H.263+, which expects upper-case. If the caller presents its parameter differently, Asterisk ignores, and then not propagates it to the callee. This affects media quality because, without some parameters, defaults are assumed, a common low quality.

Even by looking through the Asterisk issue tracker, just for H.263+, several implementations use lower-, some mixed-cases, and not the expected upper-cases. H.263+ has a common low quality. Therefore, the video quality degrades

The attached patch fixes this for H.263+. That patch up-cases the whole format parameter, and the existing parsing succeeds. However, actually, only the parameter names, not their values, are case-insensitive. In the case of H.263+, this differentiation does not matter because all values are just digits.
Comments:By: Asterisk Team (asteriskteam) 2021-01-28 10:07:16.942-0600

Thanks for creating a report! The issue has entered the triage process. That means the issue will wait in this status until a Bug Marshal has an opportunity to review the issue. Once the issue has been reviewed you will receive comments regarding the next steps towards resolution. Please note that log messages and other files should not be sent to the Sangoma Asterisk Team unless explicitly asked for. All files should be placed on this issue in a sanitized fashion as needed.

A good first step is for you to review the [Asterisk Issue Guidelines|https://wiki.asterisk.org/wiki/display/AST/Asterisk+Issue+Guidelines] if you haven't already. The guidelines detail what is expected from an Asterisk issue report.

Then, if you are submitting a patch, please review the [Patch Contribution Process|https://wiki.asterisk.org/wiki/display/AST/Patch+Contribution+Process].

Please note that once your issue enters an open state it has been accepted. As Asterisk is an open source project there is no guarantee or timeframe on when your issue will be looked into. If you need expedient resolution you will need to find and pay a suitable developer. Asking for an update on your issue will not yield any progress on it and will not result in a response. All updates are posted to the issue when they occur.

Please note that by submitting data, code, or documentation to Sangoma through JIRA, you accept the Terms of Use present at [https://www.asterisk.org/terms-of-use/|https://www.asterisk.org/terms-of-use/].

By: Alexander Traud (traud) 2021-03-06 01:49:47.505-0600

Attaching a patch for Asterisk 13 and Asterisk 17, for those who cannot migrate to a newer Asterisk, yet.

Each parameter was checked whether its value could be case sensitive. With such a parameter *value*, not the *whole* parameter string but each individual paramater *name* must be lowered only. All modules except H.264 are fixed. Only, H.264 needs a different approach because the parameter value of {{sprop-parameter-sets}} is not case-insensitive because it is Base64.