-
Notifications
You must be signed in to change notification settings - Fork 1.1k
core,app_dial,pjsip: Implement Advanced Codec Negotiation (ACN) #285
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
core,app_dial,pjsip: Implement Advanced Codec Negotiation (ACN) #285
Conversation
testsuite-test-pr: 20 |
I haven't looked at the code, just the upgrade note, but the options can not be removed. They must continue to exist. |
This PR must be tested with the corresponding testsuite PR which adds 48 tests to test the codec negotiation: Further, 10 tests were adopted to reflect the new behavior. For those tests, |
@jcolp And they must continue to work? Or silently be ignored like the ACN settings were? I'm not sure if I see a way for both settings to co-exist without interfering with each other. |
Yes. We can not remove options in minor versions, or alter their behavior, unless there is a critical reason why - such as a security issue. This does not rise to that level. |
For example, if the options are kept but default to empty in the code we can determine that they are actually unset. Default behavior should remain the same in that case even if the options were removed. If they are set then those settings take priority. If unset then the other options take priority.
|
Makes sense, I probably should have checked with the maintainers first. So would it be an option for Asterisk 21? |
Asterisk 21, once branched, can no longer receive breaking changes. |
I'm sticking to the policy that breaking changes are for standard releases, which next would be 23. If this change can be altered to maintain backwards compatibility then it would be eligible for all. |
Ok, then I will look into your suggestion and try to find a way to not change the existing behavior and not remove any settings. Is it possible to mark this PR as a draft while I do that? |
I've converted it to a draft. |
Consider the case where neither the "old" options
They must be set to |
Thanks for picking this up!!! |
@gtjoseph Thank you! I am now incorporating Joshua's remarks and I noticed that some fax/pjsip tests failed (which I didn't check). So this is still a WIP, but we have confirmed that the ACN is working as expected (e.g. see the linked testsuite PR and we have done manual testing as well). |
To be more precise, I think the logic should be: As soon as one of I think everything else would lead to maximum confusion. I will state this in the docs for the settings. |
Update: We can not really invest more time into making this patch also work with the old settings. @jcolp Is the removal of the We are confident that this patch implements ACN as it is supposed to, the only missing piece seems to be the failing fax tests. |
There is a waiting-for-standard-release-development-cycle label for this purpose, that could be applied. But I'm not sure contributors can add it themselves. |
I've added it. |
c6b7d4b
to
31abe63
Compare
REMINDER: If this PR applies to other branches, please add a comment with the appropriate "cherry-pick-to" headers as per the Create a Pull Request process. If you don't want it cherry-picked, please add a comment with If, after adding "cherry-pick-to" comments, you change your mind, please edit the comment to DELETE the header lines and add The currently active branches are now 20, 21, 22 and master. |
cherry-pick-to: none |
ee485e8
to
a71a001
Compare
REMINDER: If this PR applies to other branches, please add a comment with the appropriate "cherry-pick-to" headers as per the Create a Pull Request process. If you don't want it cherry-picked, please add a comment with If, after adding "cherry-pick-to" comments, you change your mind, please edit the comment to DELETE the header lines and add The currently active branches are now 20, 21, 22 and master. |
a71a001
to
0ea2ec5
Compare
Advanced Codec Negotiation is now implemented for the dial application, pjsip channels and local channels. Resolves: asterisk#223 UpgradeNote: The two pjsip.conf options "incoming_call_offer_pref" and "outgoing_call_offer_pref" have been removed. Instead, the new options "codec_prefs_incoming_answer", "codec_prefs_incoming_offer", "codec_prefs_outgoing_answer", "codec_prefs_outgoing_offer" must be used. Even if the old settings were not used, this could break existing deployments as the default ACN options are now in use and they might behave differently in some call flows (e.g. by default, pending codecs are always preferred, not the endpoint configuration). UserNote: The Advanced Codec Negotiation feature is now implemented.
0ea2ec5
to
f689555
Compare
REMINDER: If this PR applies to other branches, please add a comment with the appropriate cherry-pick-to headers as per the Create a Pull Request process. If you don't want it cherry-picked, please add a comment with so we don't keep asking. If, after adding cherry-pick-to comments, you change your mind, please edit the comment to DELETE the header lines and add . The currently active branches are now 20, 21, 22 and master. |
I've had 7 crashes in as many weeks, handling several hundred thousand calls pr day. When 180/SDP is received, there is no channel lock, and it is using the "old"
|
I've used the following patch for a couple of weeks (~5M calls) without crashes and haven't noticed any side effects.
|
Advanced Codec Negotiation is now implemented for the dial application, pjsip channels and local channels.
Resolves: #223
UpgradeNote: The two pjsip.conf options "incoming_call_offer_pref" and "outgoing_call_offer_pref" have been removed. Instead, the new options "codec_prefs_incoming_answer", "codec_prefs_incoming_offer", "codec_prefs_outgoing_answer", "codec_prefs_outgoing_offer" must be used. Even if the old settings were not used, this could break existing deployments as the default ACN options are now in use and they might behave differently in some call flows (e.g. by default, pending codecs are always preferred, not the endpoint configuration).
UserNote: The Advanced Codec Negotiation feature is now implemented.