diff --git a/.version b/.version
index 44e031ba9b..23df23f9f2 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-22.2.0
+22.3.0-rc1
diff --git a/CHANGES.html b/CHANGES.html
new file mode 120000
index 0000000000..4c929289ff
--- /dev/null
+++ b/CHANGES.html
@@ -0,0 +1 @@
+ChangeLogs/ChangeLog-22.3.0-rc1.html
\ No newline at end of file
diff --git a/CHANGES.md b/CHANGES.md
index a8523e56cc..5d1fd63d36 120000
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1 +1 @@
-ChangeLogs/ChangeLog-22.2.0.md
\ No newline at end of file
+ChangeLogs/ChangeLog-22.3.0-rc1.md
\ No newline at end of file
diff --git a/ChangeLogs/ChangeLog-22.3.0-rc1.html b/ChangeLogs/ChangeLog-22.3.0-rc1.html
new file mode 100644
index 0000000000..82c6f93bbf
--- /dev/null
+++ b/ChangeLogs/ChangeLog-22.3.0-rc1.html
@@ -0,0 +1,562 @@
+
ChangeLog for asterisk-22.3.0-rc1
+Change Log for Release asterisk-22.3.0-rc1
+Links:
+
+Summary:
+
+- Commits: 28
+- Commit Authors: 12
+- Issues Resolved: 12
+- Security Advisories Resolved: 0
+
+User Notes:
+
+-
+
ari/pjsip: Make it possible to control transfers through ARI
+ Call transfers on the PJSIP channel can now be controlled by
+ ARI. This can be enabled by using the PJSIP_TRANSFER_HANDLING(ari-only)
+ dialplan function.
+
+Upgrade Notes:
+Commit Authors:
+
+- Allan Nathanson: (1)
+- Ben Ford: (1)
+- Fabriziopicconi: (1)
+- George Joseph: (10)
+- Holger Hans Peter Freyther: (1)
+- Jeremy Lainé: (1)
+- Joshua Elson: (1)
+- Luz Paz: (3)
+- Maximilian Fridrich: (1)
+- Mike Bradeen: (1)
+- Naveen Albert: (1)
+- Sean Bright: (6)
+
+Issue and Commit Detail:
+Closed Issues:
+
+- 211: [bug]: stasis: Off-nominal channel leave causes bridge to be destroyed
+- 1085: [bug]: utils: Compilation failure with DEVMODE due to old-style definitions
+- 1101: [bug]: when setting a var with a double quotes and using Set(HASH)
+- 1109: [bug]: Off nominal memory leak in res/ari/resource_channels.c
+- 1112: [bug]: STIR/SHAKEN verification doesn't allow anonymous callerid to be passed to the dialplan.
+- 1119: [bug]: Realtime database not working after upgrade from 22.0.0 to 22.2.0
+- 1122: Need status on CVE-2024-57520 claim.
+- 1124: [bug]: Race condition between bridge and channel delete can over-write cause code set in hangup.
+- 1131: [bug]: CHANGES link broken in README.md
+- 1135: [bug]: Problems with video decoding due to RTP marker bit set
+- 1149: [bug]: res_pjsip: Mismatch in tcp_keepalive_enable causes not to enable
+- 1164: [bug]: WARNING Message in messages.log for res_curl.conf [globals]
+
+Commits By Author:
+
+-
+
Allan Nathanson (1):
+
+-
+
config.c: #include of non-existent file should not crash
+
+-
+
Ben Ford (1):
+
+-
+
documentation: Update Gosub, Goto, and add new documentationtype.
+
+-
+
George Joseph (10):
+
+- docs: Add version information to ARI resources and methods.
+- docs: Add version information to AGI command XML elements.
+- func_strings.c: Prevent SEGV in HASH single-argument mode.
+- resource_channels.c: Fix memory leak in ast_ari_channels_external_media.
+- res_stir_shaken: Allow missing or anonymous CID to continue to the dialplan.
+- res_config_pgsql: Fix regression that removed dbname config.
+- bridging: Fix multiple bridging issues causing SEGVs and FRACKs.
+- swagger_model.py: Fix invalid escape sequence in get_list_parameter_type().
+- manager.c: Check for restricted file in action_createconfig.
+-
+
README.md: Updates and Fixes
+
+-
+
Holger Hans Peter Freyther (1):
+
+-
+
ari/pjsip: Make it possible to control transfers through ARI
+
+-
+
Jeremy Lainé (1):
+
+-
+
docs: Fix minor typo in MixMonitor AMI action
+
+-
+
Joshua Elson (1):
+
+-
+
fix: Correct default flag for tcp_keepalive_enable option
+
+-
+
Luz Paz (3):
+
+- docs: Fix various typos in main/ Found via `codespell -q 3 -S "./CREDITS" -L a..
+- docs: Fix various typos in channels/ Found via `codespell -q 3 -S "./CREDITS,*..
+-
+
docs: Fix typos in cdr/ Found via codespell
+
+-
+
Maximilian Fridrich (1):
+
+-
+
Revert "res_rtp_asterisk.c: Set Mark on rtp when timestamp skew is too big"
+
+-
+
Mike Bradeen (1):
+
+-
+
bridge_channel: don't set cause code on channel during bridge delete if alread..
+
+-
+
Naveen Albert (1):
+
+-
+
utils: Disable old style definition warnings for libdb.
+
+-
+
Sean Bright (6):
+
+- docs: Indent tags.
+- channel.c: Remove dead AST_GENERATOR_FD code.
+- res_rtp_asterisk.c: Use correct timeout value for T.140 RED timer.
+- docs: AMI documentation fixes.
+- res_rtp_asterisk.c: Don't truncate spec-compliant
ice-ufrag
or ice-pwd
.
+-
+
res_config_curl.c: Remove unnecessary warnings.
+
+-
+
fabriziopicconi (1):
+
+- rtp.conf.sample: Correct stunaddr example.
+
+Commit List:
+
+- documentation: Update Gosub, Goto, and add new documentationtype.
+- res_config_curl.c: Remove unnecessary warnings.
+- README.md: Updates and Fixes
+- res_rtp_asterisk.c: Don't truncate spec-compliant
ice-ufrag
or ice-pwd
.
+- fix: Correct default flag for tcp_keepalive_enable option
+- docs: AMI documentation fixes.
+- config.c: #include of non-existent file should not crash
+- manager.c: Check for restricted file in action_createconfig.
+- swagger_model.py: Fix invalid escape sequence in get_list_parameter_type().
+- Revert "res_rtp_asterisk.c: Set Mark on rtp when timestamp skew is too big"
+- res_rtp_asterisk.c: Use correct timeout value for T.140 RED timer.
+- docs: Fix typos in cdr/ Found via codespell
+- bridging: Fix multiple bridging issues causing SEGVs and FRACKs.
+- res_config_pgsql: Fix regression that removed dbname config.
+- res_stir_shaken: Allow missing or anonymous CID to continue to the dialplan.
+- resource_channels.c: Fix memory leak in ast_ari_channels_external_media.
+- ari/pjsip: Make it possible to control transfers through ARI
+- channel.c: Remove dead AST_GENERATOR_FD code.
+- func_strings.c: Prevent SEGV in HASH single-argument mode.
+- docs: Add version information to AGI command XML elements.
+- docs: Fix minor typo in MixMonitor AMI action
+- utils: Disable old style definition warnings for libdb.
+- rtp.conf.sample: Correct stunaddr example.
+- docs: Add version information to ARI resources and methods.
+- docs: Indent tags.
+
+Commit Details:
+documentation: Update Gosub, Goto, and add new documentationtype.
+Author: Ben Ford
+ Date: 2025-03-14
+Gosub and Goto were not displaying their syntax correctly on the docs
+ site. This change adds a new way to specify an optional context, an
+ optional extension, and a required priority that the xml stylesheet can
+ parse without having to know which optional parameters come in which
+ order. In Asterisk, it looks like this:
+parameter name="context" documentationtype="dialplan_context"
+parameter name="extension" documentationtype="dialplan_extension"
+parameter name="priority" documentationtype="dialplan_priority" required="true"
+
+The stylesheet will ignore the context and extension parameters, but for
+ priority, it will automatically inject the following:
+[[context,]extension,]priority
+
+This is the correct oder for applications such as Gosub and Goto.
+res_config_curl.c: Remove unnecessary warnings.
+Author: Sean Bright
+ Date: 2025-03-17
+Resolves: #1164
+README.md: Updates and Fixes
+Author: George Joseph
+ Date: 2025-03-05
+
+- Outdated information has been removed.
+- New links added.
+- Placeholder added for link to change logs.
+
+Going forward, the release process will create HTML versions of the README
+ and change log and will update the link in the README to the current
+ change log for the branch...
+
+- In the development branches, the link will always point to the current
+ release on GitHub.
+- In the "releases/*" branches and the tarballs, the link will point to the
+ ChangeLogs/ChangeLog-.html file in the source directory.
+- On the downloads website, the link will point to the
+ ChangeLog-.html file in the same directory.
+
+Resolves: #1131
+res_rtp_asterisk.c: Don't truncate spec-compliant ice-ufrag
or ice-pwd
.
+Author: Sean Bright
+ Date: 2025-03-07
+RFC 8839[1] indicates that the ice-ufrag
and ice-pwd
attributes
+ can be up to 256 bytes long. While we don't generate values of that
+ size, we should be able to accomodate them without truncating.
+
+- https://www.rfc-editor.org/rfc/rfc8839#name-ice-ufrag-and-ice-pwd-attri
+
+fix: Correct default flag for tcp_keepalive_enable option
+Author: Joshua Elson
+ Date: 2025-03-06
+Resolves an issue where the tcp_keepalive_enable option was not properly enabled in the sample configuration due to an incorrect default flag setting.
+Fixes: #1149
+docs: AMI documentation fixes.
+Author: Sean Bright
+ Date: 2025-02-18
+Most of this patch is adding missing PJSIP-related event
+ documentation, but the one functional change was adding a sorcery
+ to-string handler for endpoint's redirect_method
which was not
+ showing up in the AMI event details or pjsip show endpoint
+ <endpoint>
output.
+The rest of the changes are summarized below:
+
+- app_agent_pool.c: Typo fix Epoche -> Epoch.
+- stasis_bridges.c: Add missing AttendedTransfer properties.
+- stasis_channels.c: Add missing AgentLogoff properties.
+- pjsip_manager.xml:
+- Add missing AorList properties.
+- Add missing AorDetail properties.
+- Add missing ContactList properties.
+- Add missing ContactStatusDetail properties.
+- Add missing EventDetail properties.
+- Add missing AuthList properties.
+- Add missing AuthDetail properties.
+- Add missing TransportDetail properties.
+- Add missing EndpointList properties.
+- Add missing IdentifyDetail properties.
+
+
+- res_pjsip_registrar.c: Add missing InboundRegistrationDetail documentation.
+- res_pjsip_pubsub.c:
+- Add missing ResourceListDetail documentation.
+- Add missing InboundSubscriptionDetail documentation.
+- Add missing OutboundSubscriptionDetail documentation.
+
+
+- res_pjsip_outbound_registration.c: Add missing OutboundRegistrationDetail documentation.
+
+config.c: #include of non-existent file should not crash
+Author: Allan Nathanson
+ Date: 2025-03-03
+Corrects a segmentation fault when a configuration file has a #include
+ statement that referenced a file that does not exist.
+Resolves: https://github.com/asterisk/asterisk/issues/1139
+manager.c: Check for restricted file in action_createconfig.
+Author: George Joseph
+ Date: 2025-03-03
+The CreateConfig
manager action now ensures that a config file can
+ only be created in the AST_CONFIG_DIR unless live_dangerously
is set.
+Resolves: #1122
+swagger_model.py: Fix invalid escape sequence in get_list_parameter_type().
+Author: George Joseph
+ Date: 2025-03-04
+Recent python versions complain when backslashes in strings create invalid
+ escape sequences. This causes issues for strings used as regex patterns like
+ '^List\[(.*)\]$'
where you want the regex parser to treat [
and ]
+ as literals. Double-backslashing is one way to fix it but simply converting
+ the string to a raw string re.match(r'^List\[(.*)\]$', text)
is easier
+ and less error prone.
+Revert "res_rtp_asterisk.c: Set Mark on rtp when timestamp skew is too big"
+Author: Maximilian Fridrich
+ Date: 2025-02-28
+This reverts commit f30ad96b3f467739c38ff415e80bffc4afff1da7.
+The original change was not RFC compliant and caused issues because it
+ set the RTP marker bit in cases when it shouldn't be set. See the
+ linked issue #1135 for a detailed explanation.
+Fixes: #1135.
+res_rtp_asterisk.c: Use correct timeout value for T.140 RED timer.
+Author: Sean Bright
+ Date: 2025-02-24
+Found while reviewing #1128
+docs: Fix typos in cdr/ Found via codespell
+Author: Luz Paz
+ Date: 2025-02-12
+docs: Fix various typos in channels/ Found via `codespell -q 3 -S "./CREDITS,*..
+Author: Luz Paz
+ Date: 2025-02-04
+docs: Fix various typos in main/ Found via `codespell -q 3 -S "./CREDITS" -L a..
+Author: Luz Paz
+ Date: 2025-02-04
+bridging: Fix multiple bridging issues causing SEGVs and FRACKs.
+Author: George Joseph
+ Date: 2025-01-22
+Issues:
+
+-
+
The bridging core allowed multiple bridges to be created with the same
+ unique bridgeId at the same time. Only the last bridge created with the
+ duplicate name was actually saved to the core bridges container.
+
+-
+
The bridging core was creating a stasis topic for the bridge and saving it
+ in the bridge->topic field but not increasing its reference count. In the
+ case where two bridges were created with the same uniqueid (which is also
+ the topic name), the second bridge would get the existing topic the first
+ bridge created. When the first bridge was destroyed, it would take the
+ topic with it so when the second bridge attempted to publish a message to
+ it it either FRACKed or SEGVd.
+
+-
+
The bridge destructor, which also destroys the bridge topic, is run from the
+ bridge manager thread not the caller's thread. This makes it possible for
+ an ARI developer to create a new one with the same uniqueid believing the
+ old one was destroyed when, in fact, the old one's destructor hadn't
+ completed. This could cause the new bridge to get the old one's topic just
+ before the topic was destroyed. When the new bridge attempted to publish
+ a message on that topic, asterisk could either FRACK or SEGV.
+
+-
+
The ARI bridges resource also allowed multiple bridges to be created with
+ the same uniqueid but it kept the duplicate bridges in its app_bridges
+ container. This created a situation where if you added two bridges with
+ the same "bridge1" uniqueid, all operations on "bridge1" were performed on
+ the first bridge created and the second was basically orphaned. If you
+ attempted to delete what you thought was the second bridge, you actually
+ deleted the first one created.
+
+
+Changes:
+
+-
+
A new API ast_bridge_topic_exists(uniqueid)
was created to determine if
+ a topic already exists for a bridge.
+
+-
+
bridge_base_init()
in bridge.c and ast_ari_bridges_create()
in
+ resource_bridges.c now call ast_bridge_topic_exists(uniqueid)
to check
+ if a bridge with the requested uniqueid already exists and will fail if it
+ does.
+
+-
+
bridge_register()
in bridges.c now checks the core bridges container to
+ make sure a bridge doesn't already exist with the requested uniqueid.
+ Although most callers of bridge_register()
will have already called
+ bridge_base_init()
, which will now fail on duplicate bridges, there
+ is no guarantee of this so we must check again.
+
+-
+
The core bridges container allocation was changed to reject duplicate
+ uniqueids instead of silently replacing an existing one. This is a "belt
+ and suspenders" check.
+
+-
+
A global mutex was added to bridge.c to prevent concurrent calls to
+ bridge_base_init()
and bridge_register()
.
+
+-
+
Even though you can no longer create multiple bridges with the same uniqueid
+ at the same time, it's still possible that the bridge topic might be
+ destroyed while a second bridge with the same uniqueid was trying to use
+ it. To address this, the bridging core now increments the reference count
+ on bridge->topic when a bridge is created and decrements it when the
+ bridge is destroyed.
+
+-
+
bridge_create_common()
in res_stasis.c now checks the stasis app_bridges
+ container to make sure a bridge with the requested uniqueid doesn't already
+ exist. This may seem like overkill but there are so many entrypoints to
+ bridge creation that we need to be safe and catch issues as soon in the
+ process as possible.
+
+-
+
The stasis app_bridges container allocation was changed to reject duplicate
+ uniqueids instead of adding them. This is a "belt and suspenders" check.
+
+-
+
The bridge show all
CLI command now shows the bridge name as well as the
+ bridge id.
+
+-
+
Response code 409 "Conflict" was added as a possible response from the ARI
+ bridge create resources to signal that a bridge with the requested uniqueid
+ already exists.
+
+-
+
Additional debugging was added to multiple bridging and stasis files.
+
+
+Resolves: #211
+bridge_channel: don't set cause code on channel during bridge delete if alread..
+Author: Mike Bradeen
+ Date: 2025-02-18
+Due to a potential race condition via ARI when hanging up a channel hangup with cause
+ while also deleting a bridge containing that channel, the bridge delete can over-write
+ the hangup cause code resulting in Normal Call Clearing instead of the set value.
+With this change, bridge deletion will only set the hangup code if it hasn't been
+ previously set.
+Resolves: #1124
+res_config_pgsql: Fix regression that removed dbname config.
+Author: George Joseph
+ Date: 2025-02-11
+A recent commit accidentally removed the code that sets dbname.
+ This commit adds it back in.
+Resolves: #1119
+res_stir_shaken: Allow missing or anonymous CID to continue to the dialplan.
+Author: George Joseph
+ Date: 2025-02-05
+The verification check for missing or anonymous callerid was happening before
+ the endpoint's profile was retrieved which meant that the failure_action
+ parameter wasn't available. Therefore, if verification was enabled and there
+ was no callerid or it was "anonymous", the call was immediately terminated
+ instead of giving the dialplan the ability to decide what to do with the call.
+
+-
+
The callerid check now happens after the verification context is created and
+ the endpoint's stir_shaken_profile is available.
+
+-
+
The check now processes the callerid failure just as it does for other
+ verification failures and respects the failure_action parameter. If set
+ to "continue" or "continue_return_reason", STIR_SHAKEN(0,verify_result)
+ in the dialplan will return "invalid_or_no_callerid".
+
+-
+
If the endpoint's failure_action is "reject_request", the call will be
+ rejected with 433 "Anonymity Disallowed"
.
+
+-
+
If the endpoint's failure_action is "continue_return_reason", the call will
+ continue but a Reason: STIR; cause=433; text="Anonymity Disallowed"
+ header will be added to the next provisional or final response.
+
+
+Resolves: #1112
+resource_channels.c: Fix memory leak in ast_ari_channels_external_media.
+Author: George Joseph
+ Date: 2025-02-04
+Between ast_ari_channels_external_media(), external_media_rtp_udp(),
+ and external_media_audiosocket_tcp(), the variables
structure being passed
+ around wasn't being cleaned up properly when there was a failure.
+
+-
+
In ast_ari_channels_external_media(), the variables
structure is now
+ defined with RAII_VAR to ensure it always gets cleaned up.
+
+-
+
The ast_variables_destroy() call was removed from external_media_rtp_udp().
+
+-
+
The ast_variables_destroy() call was removed from
+ external_media_audiosocket_tcp(), its endpoint
allocation was changed to
+ to use ast_asprintf() as external_media_rtp_udp() does, and it now
+ returns an error on failure.
+
+-
+
ast_ari_channels_external_media() now checks the new return code from
+ external_media_audiosocket_tcp() and sets the appropriate error response.
+
+
+Resolves: #1109
+ari/pjsip: Make it possible to control transfers through ARI
+Author: Holger Hans Peter Freyther
+ Date: 2024-06-15
+Introduce a ChannelTransfer event and the ability to notify progress to
+ ARI. Implement emitting this event from the PJSIP channel instead of
+ handling the transfer in Asterisk when configured.
+Introduce a dialplan function to the PJSIP channel to switch between the
+ "core" and "ari-only" behavior.
+UserNote: Call transfers on the PJSIP channel can now be controlled by
+ ARI. This can be enabled by using the PJSIP_TRANSFER_HANDLING(ari-only)
+ dialplan function.
+channel.c: Remove dead AST_GENERATOR_FD code.
+Author: Sean Bright
+ Date: 2025-02-06
+Nothing ever sets the AST_GENERATOR_FD
, so this block of code will
+ never execute. It also is the only place where the generate
callback
+ is called with the channel lock held which made it difficult to reason
+ about the thread safety of ast_generator
s.
+In passing, also note that AST_AGENT_FD
isn't used either.
+func_strings.c: Prevent SEGV in HASH single-argument mode.
+Author: George Joseph
+ Date: 2025-01-30
+When in single-argument mode (very rarely used), a malformation of a column
+ name (also very rare) could cause a NULL to be returned when retrieving the
+ channel variable for that column. Passing that to strncat causes a SEGV. We
+ now check for the NULL and print a warning message.
+Resolves: #1101
+docs: Add version information to AGI command XML elements.
+Author: George Joseph
+ Date: 2025-01-24
+This process was a bit different than the others because everything
+ is in the same file, there's an array that contains the command
+ names and their handler functions, and the last command was created
+ over 15 years ago.
+
+- Dump a
git blame
of res/res_agi.c from BEFORE the handle_* prototypes
+ were changed.
+- Create a command <> handler function xref by parsing the the agi_command
+ array.
+- For each entry, grep the function definition line "static int handle_*"
+ from the git blame output and capture the commit. This will be the
+ commit the command was created in.
+- Do a
git tag --contains <commit> | sort -V | head -1
to get the
+ tag the function was created in.
+- Add a single since/version element to the command XML. Multiple versions
+ aren't supported here because the branching and tagging scheme changed
+ several times in the 2000's.
+
+docs: Fix minor typo in MixMonitor AMI action
+Author: Jeremy Lainé
+ Date: 2025-01-28
+The Options
argument was erroneously documented as lowercase
+ options
.
+utils: Disable old style definition warnings for libdb.
+Author: Naveen Albert
+ Date: 2025-01-23
+Newer versions of gcc now warn about old style definitions, such
+ as those in libdb, which causes compilation failure with DEVMODE
+ enabled. Ignore these warnings for libdb.
+Resolves: #1085
+rtp.conf.sample: Correct stunaddr example.
+Author: fabriziopicconi
+ Date: 2024-09-25
+docs: Add version information to ARI resources and methods.
+Author: George Joseph
+ Date: 2025-01-27
+
+-
+
Dump a git blame of each file in rest-api/api-docs.
+
+-
+
Get the commit for each "resourcePath" and "httpMethod" entry.
+
+-
+
Find the tags for each commit (same as other processes).
+
+-
+
Insert a "since" array after each "resourcePath" and "httpMethod" entry.
+
+
+docs: Indent tags.
+Author: Sean Bright
+ Date: 2025-01-23
+Also updates the 'since' of applications/functions that existed before
+ XML documentation was introduced (1.6.2.0).
+
diff --git a/ChangeLogs/ChangeLog-22.3.0-rc1.md b/ChangeLogs/ChangeLog-22.3.0-rc1.md
new file mode 100644
index 0000000000..fa4cc0e85c
--- /dev/null
+++ b/ChangeLogs/ChangeLog-22.3.0-rc1.md
@@ -0,0 +1,573 @@
+
+## Change Log for Release asterisk-22.3.0-rc1
+
+### Links:
+
+ - [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-22.3.0-rc1.html)
+ - [GitHub Diff](https://github.com/asterisk/asterisk/compare/22.2.0...22.3.0-rc1)
+ - [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22.3.0-rc1.tar.gz)
+ - [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
+
+### Summary:
+
+- Commits: 28
+- Commit Authors: 12
+- Issues Resolved: 12
+- Security Advisories Resolved: 0
+
+### User Notes:
+
+- #### ari/pjsip: Make it possible to control transfers through ARI
+ Call transfers on the PJSIP channel can now be controlled by
+ ARI. This can be enabled by using the PJSIP_TRANSFER_HANDLING(ari-only)
+ dialplan function.
+
+
+### Upgrade Notes:
+
+
+### Commit Authors:
+
+- Allan Nathanson: (1)
+- Ben Ford: (1)
+- Fabriziopicconi: (1)
+- George Joseph: (10)
+- Holger Hans Peter Freyther: (1)
+- Jeremy Lainé: (1)
+- Joshua Elson: (1)
+- Luz Paz: (3)
+- Maximilian Fridrich: (1)
+- Mike Bradeen: (1)
+- Naveen Albert: (1)
+- Sean Bright: (6)
+
+## Issue and Commit Detail:
+
+### Closed Issues:
+
+ - 211: [bug]: stasis: Off-nominal channel leave causes bridge to be destroyed
+ - 1085: [bug]: utils: Compilation failure with DEVMODE due to old-style definitions
+ - 1101: [bug]: when setting a var with a double quotes and using Set(HASH)
+ - 1109: [bug]: Off nominal memory leak in res/ari/resource_channels.c
+ - 1112: [bug]: STIR/SHAKEN verification doesn't allow anonymous callerid to be passed to the dialplan.
+ - 1119: [bug]: Realtime database not working after upgrade from 22.0.0 to 22.2.0
+ - 1122: Need status on CVE-2024-57520 claim.
+ - 1124: [bug]: Race condition between bridge and channel delete can over-write cause code set in hangup.
+ - 1131: [bug]: CHANGES link broken in README.md
+ - 1135: [bug]: Problems with video decoding due to RTP marker bit set
+ - 1149: [bug]: res_pjsip: Mismatch in tcp_keepalive_enable causes not to enable
+ - 1164: [bug]: WARNING Message in messages.log for res_curl.conf [globals]
+
+### Commits By Author:
+
+- #### Allan Nathanson (1):
+ - config.c: #include of non-existent file should not crash
+
+- #### Ben Ford (1):
+ - documentation: Update Gosub, Goto, and add new documentationtype.
+
+- #### George Joseph (10):
+ - docs: Add version information to ARI resources and methods.
+ - docs: Add version information to AGI command XML elements.
+ - func_strings.c: Prevent SEGV in HASH single-argument mode.
+ - resource_channels.c: Fix memory leak in ast_ari_channels_external_media.
+ - res_stir_shaken: Allow missing or anonymous CID to continue to the dialplan.
+ - res_config_pgsql: Fix regression that removed dbname config.
+ - bridging: Fix multiple bridging issues causing SEGVs and FRACKs.
+ - swagger_model.py: Fix invalid escape sequence in get_list_parameter_type().
+ - manager.c: Check for restricted file in action_createconfig.
+ - README.md: Updates and Fixes
+
+- #### Holger Hans Peter Freyther (1):
+ - ari/pjsip: Make it possible to control transfers through ARI
+
+- #### Jeremy Lainé (1):
+ - docs: Fix minor typo in MixMonitor AMI action
+
+- #### Joshua Elson (1):
+ - fix: Correct default flag for tcp_keepalive_enable option
+
+- #### Luz Paz (3):
+ - docs: Fix various typos in main/ Found via `codespell -q 3 -S "./CREDITS" -L a..
+ - docs: Fix various typos in channels/ Found via `codespell -q 3 -S "./CREDITS,*..
+ - docs: Fix typos in cdr/ Found via codespell
+
+- #### Maximilian Fridrich (1):
+ - Revert "res_rtp_asterisk.c: Set Mark on rtp when timestamp skew is too big"
+
+- #### Mike Bradeen (1):
+ - bridge_channel: don't set cause code on channel during bridge delete if alread..
+
+- #### Naveen Albert (1):
+ - utils: Disable old style definition warnings for libdb.
+
+- #### Sean Bright (6):
+ - docs: Indent tags.
+ - channel.c: Remove dead AST_GENERATOR_FD code.
+ - res_rtp_asterisk.c: Use correct timeout value for T.140 RED timer.
+ - docs: AMI documentation fixes.
+ - res_rtp_asterisk.c: Don't truncate spec-compliant `ice-ufrag` or `ice-pwd`.
+ - res_config_curl.c: Remove unnecessary warnings.
+
+- #### fabriziopicconi (1):
+ - rtp.conf.sample: Correct stunaddr example.
+
+
+### Commit List:
+
+- documentation: Update Gosub, Goto, and add new documentationtype.
+- res_config_curl.c: Remove unnecessary warnings.
+- README.md: Updates and Fixes
+- res_rtp_asterisk.c: Don't truncate spec-compliant `ice-ufrag` or `ice-pwd`.
+- fix: Correct default flag for tcp_keepalive_enable option
+- docs: AMI documentation fixes.
+- config.c: #include of non-existent file should not crash
+- manager.c: Check for restricted file in action_createconfig.
+- swagger_model.py: Fix invalid escape sequence in get_list_parameter_type().
+- Revert "res_rtp_asterisk.c: Set Mark on rtp when timestamp skew is too big"
+- res_rtp_asterisk.c: Use correct timeout value for T.140 RED timer.
+- docs: Fix typos in cdr/ Found via codespell
+- bridging: Fix multiple bridging issues causing SEGVs and FRACKs.
+- res_config_pgsql: Fix regression that removed dbname config.
+- res_stir_shaken: Allow missing or anonymous CID to continue to the dialplan.
+- resource_channels.c: Fix memory leak in ast_ari_channels_external_media.
+- ari/pjsip: Make it possible to control transfers through ARI
+- channel.c: Remove dead AST_GENERATOR_FD code.
+- func_strings.c: Prevent SEGV in HASH single-argument mode.
+- docs: Add version information to AGI command XML elements.
+- docs: Fix minor typo in MixMonitor AMI action
+- utils: Disable old style definition warnings for libdb.
+- rtp.conf.sample: Correct stunaddr example.
+- docs: Add version information to ARI resources and methods.
+- docs: Indent tags.
+
+### Commit Details:
+
+#### documentation: Update Gosub, Goto, and add new documentationtype.
+ Author: Ben Ford
+ Date: 2025-03-14
+
+ Gosub and Goto were not displaying their syntax correctly on the docs
+ site. This change adds a new way to specify an optional context, an
+ optional extension, and a required priority that the xml stylesheet can
+ parse without having to know which optional parameters come in which
+ order. In Asterisk, it looks like this:
+
+ parameter name="context" documentationtype="dialplan_context"
+ parameter name="extension" documentationtype="dialplan_extension"
+ parameter name="priority" documentationtype="dialplan_priority" required="true"
+
+ The stylesheet will ignore the context and extension parameters, but for
+ priority, it will automatically inject the following:
+
+ [[context,]extension,]priority
+
+ This is the correct oder for applications such as Gosub and Goto.
+
+
+#### res_config_curl.c: Remove unnecessary warnings.
+ Author: Sean Bright
+ Date: 2025-03-17
+
+ Resolves: #1164
+
+#### README.md: Updates and Fixes
+ Author: George Joseph
+ Date: 2025-03-05
+
+ * Outdated information has been removed.
+ * New links added.
+ * Placeholder added for link to change logs.
+
+ Going forward, the release process will create HTML versions of the README
+ and change log and will update the link in the README to the current
+ change log for the branch...
+
+ * In the development branches, the link will always point to the current
+ release on GitHub.
+ * In the "releases/*" branches and the tarballs, the link will point to the
+ ChangeLogs/ChangeLog-.html file in the source directory.
+ * On the downloads website, the link will point to the
+ ChangeLog-.html file in the same directory.
+
+ Resolves: #1131
+
+#### res_rtp_asterisk.c: Don't truncate spec-compliant `ice-ufrag` or `ice-pwd`.
+ Author: Sean Bright
+ Date: 2025-03-07
+
+ RFC 8839[1] indicates that the `ice-ufrag` and `ice-pwd` attributes
+ can be up to 256 bytes long. While we don't generate values of that
+ size, we should be able to accomodate them without truncating.
+
+ 1. https://www.rfc-editor.org/rfc/rfc8839#name-ice-ufrag-and-ice-pwd-attri
+
+
+#### fix: Correct default flag for tcp_keepalive_enable option
+ Author: Joshua Elson
+ Date: 2025-03-06
+
+ Resolves an issue where the tcp_keepalive_enable option was not properly enabled in the sample configuration due to an incorrect default flag setting.
+
+ Fixes: #1149
+
+#### docs: AMI documentation fixes.
+ Author: Sean Bright
+ Date: 2025-02-18
+
+ Most of this patch is adding missing PJSIP-related event
+ documentation, but the one functional change was adding a sorcery
+ to-string handler for endpoint's `redirect_method` which was not
+ showing up in the AMI event details or `pjsip show endpoint
+ ` output.
+
+ The rest of the changes are summarized below:
+
+ * app_agent_pool.c: Typo fix Epoche -> Epoch.
+ * stasis_bridges.c: Add missing AttendedTransfer properties.
+ * stasis_channels.c: Add missing AgentLogoff properties.
+ * pjsip_manager.xml:
+ - Add missing AorList properties.
+ - Add missing AorDetail properties.
+ - Add missing ContactList properties.
+ - Add missing ContactStatusDetail properties.
+ - Add missing EventDetail properties.
+ - Add missing AuthList properties.
+ - Add missing AuthDetail properties.
+ - Add missing TransportDetail properties.
+ - Add missing EndpointList properties.
+ - Add missing IdentifyDetail properties.
+ * res_pjsip_registrar.c: Add missing InboundRegistrationDetail documentation.
+ * res_pjsip_pubsub.c:
+ - Add missing ResourceListDetail documentation.
+ - Add missing InboundSubscriptionDetail documentation.
+ - Add missing OutboundSubscriptionDetail documentation.
+ * res_pjsip_outbound_registration.c: Add missing OutboundRegistrationDetail documentation.
+
+
+#### config.c: #include of non-existent file should not crash
+ Author: Allan Nathanson
+ Date: 2025-03-03
+
+ Corrects a segmentation fault when a configuration file has a #include
+ statement that referenced a file that does not exist.
+
+ Resolves: https://github.com/asterisk/asterisk/issues/1139
+
+#### manager.c: Check for restricted file in action_createconfig.
+ Author: George Joseph
+ Date: 2025-03-03
+
+ The `CreateConfig` manager action now ensures that a config file can
+ only be created in the AST_CONFIG_DIR unless `live_dangerously` is set.
+
+ Resolves: #1122
+
+#### swagger_model.py: Fix invalid escape sequence in get_list_parameter_type().
+ Author: George Joseph
+ Date: 2025-03-04
+
+ Recent python versions complain when backslashes in strings create invalid
+ escape sequences. This causes issues for strings used as regex patterns like
+ `'^List\[(.*)\]$'` where you want the regex parser to treat `[` and `]`
+ as literals. Double-backslashing is one way to fix it but simply converting
+ the string to a raw string `re.match(r'^List\[(.*)\]$', text)` is easier
+ and less error prone.
+
+
+#### Revert "res_rtp_asterisk.c: Set Mark on rtp when timestamp skew is too big"
+ Author: Maximilian Fridrich
+ Date: 2025-02-28
+
+ This reverts commit f30ad96b3f467739c38ff415e80bffc4afff1da7.
+
+ The original change was not RFC compliant and caused issues because it
+ set the RTP marker bit in cases when it shouldn't be set. See the
+ linked issue #1135 for a detailed explanation.
+
+ Fixes: #1135.
+
+#### res_rtp_asterisk.c: Use correct timeout value for T.140 RED timer.
+ Author: Sean Bright
+ Date: 2025-02-24
+
+ Found while reviewing #1128
+
+
+#### docs: Fix typos in cdr/ Found via codespell
+ Author: Luz Paz
+ Date: 2025-02-12
+
+
+#### docs: Fix various typos in channels/ Found via `codespell -q 3 -S "./CREDITS,*..
+ Author: Luz Paz
+ Date: 2025-02-04
+
+
+#### docs: Fix various typos in main/ Found via `codespell -q 3 -S "./CREDITS" -L a..
+ Author: Luz Paz
+ Date: 2025-02-04
+
+
+#### bridging: Fix multiple bridging issues causing SEGVs and FRACKs.
+ Author: George Joseph
+ Date: 2025-01-22
+
+ Issues:
+
+ * The bridging core allowed multiple bridges to be created with the same
+ unique bridgeId at the same time. Only the last bridge created with the
+ duplicate name was actually saved to the core bridges container.
+
+ * The bridging core was creating a stasis topic for the bridge and saving it
+ in the bridge->topic field but not increasing its reference count. In the
+ case where two bridges were created with the same uniqueid (which is also
+ the topic name), the second bridge would get the _existing_ topic the first
+ bridge created. When the first bridge was destroyed, it would take the
+ topic with it so when the second bridge attempted to publish a message to
+ it it either FRACKed or SEGVd.
+
+ * The bridge destructor, which also destroys the bridge topic, is run from the
+ bridge manager thread not the caller's thread. This makes it possible for
+ an ARI developer to create a new one with the same uniqueid believing the
+ old one was destroyed when, in fact, the old one's destructor hadn't
+ completed. This could cause the new bridge to get the old one's topic just
+ before the topic was destroyed. When the new bridge attempted to publish
+ a message on that topic, asterisk could either FRACK or SEGV.
+
+ * The ARI bridges resource also allowed multiple bridges to be created with
+ the same uniqueid but it kept the duplicate bridges in its app_bridges
+ container. This created a situation where if you added two bridges with
+ the same "bridge1" uniqueid, all operations on "bridge1" were performed on
+ the first bridge created and the second was basically orphaned. If you
+ attempted to delete what you thought was the second bridge, you actually
+ deleted the first one created.
+
+ Changes:
+
+ * A new API `ast_bridge_topic_exists(uniqueid)` was created to determine if
+ a topic already exists for a bridge.
+
+ * `bridge_base_init()` in bridge.c and `ast_ari_bridges_create()` in
+ resource_bridges.c now call `ast_bridge_topic_exists(uniqueid)` to check
+ if a bridge with the requested uniqueid already exists and will fail if it
+ does.
+
+ * `bridge_register()` in bridges.c now checks the core bridges container to
+ make sure a bridge doesn't already exist with the requested uniqueid.
+ Although most callers of `bridge_register()` will have already called
+ `bridge_base_init()`, which will now fail on duplicate bridges, there
+ is no guarantee of this so we must check again.
+
+ * The core bridges container allocation was changed to reject duplicate
+ uniqueids instead of silently replacing an existing one. This is a "belt
+ and suspenders" check.
+
+ * A global mutex was added to bridge.c to prevent concurrent calls to
+ `bridge_base_init()` and `bridge_register()`.
+
+ * Even though you can no longer create multiple bridges with the same uniqueid
+ at the same time, it's still possible that the bridge topic might be
+ destroyed while a second bridge with the same uniqueid was trying to use
+ it. To address this, the bridging core now increments the reference count
+ on bridge->topic when a bridge is created and decrements it when the
+ bridge is destroyed.
+
+ * `bridge_create_common()` in res_stasis.c now checks the stasis app_bridges
+ container to make sure a bridge with the requested uniqueid doesn't already
+ exist. This may seem like overkill but there are so many entrypoints to
+ bridge creation that we need to be safe and catch issues as soon in the
+ process as possible.
+
+ * The stasis app_bridges container allocation was changed to reject duplicate
+ uniqueids instead of adding them. This is a "belt and suspenders" check.
+
+ * The `bridge show all` CLI command now shows the bridge name as well as the
+ bridge id.
+
+ * Response code 409 "Conflict" was added as a possible response from the ARI
+ bridge create resources to signal that a bridge with the requested uniqueid
+ already exists.
+
+ * Additional debugging was added to multiple bridging and stasis files.
+
+ Resolves: #211
+
+#### bridge_channel: don't set cause code on channel during bridge delete if alread..
+ Author: Mike Bradeen
+ Date: 2025-02-18
+
+ Due to a potential race condition via ARI when hanging up a channel hangup with cause
+ while also deleting a bridge containing that channel, the bridge delete can over-write
+ the hangup cause code resulting in Normal Call Clearing instead of the set value.
+
+ With this change, bridge deletion will only set the hangup code if it hasn't been
+ previously set.
+
+ Resolves: #1124
+
+#### res_config_pgsql: Fix regression that removed dbname config.
+ Author: George Joseph
+ Date: 2025-02-11
+
+ A recent commit accidentally removed the code that sets dbname.
+ This commit adds it back in.
+
+ Resolves: #1119
+
+#### res_stir_shaken: Allow missing or anonymous CID to continue to the dialplan.
+ Author: George Joseph
+ Date: 2025-02-05
+
+ The verification check for missing or anonymous callerid was happening before
+ the endpoint's profile was retrieved which meant that the failure_action
+ parameter wasn't available. Therefore, if verification was enabled and there
+ was no callerid or it was "anonymous", the call was immediately terminated
+ instead of giving the dialplan the ability to decide what to do with the call.
+
+ * The callerid check now happens after the verification context is created and
+ the endpoint's stir_shaken_profile is available.
+
+ * The check now processes the callerid failure just as it does for other
+ verification failures and respects the failure_action parameter. If set
+ to "continue" or "continue_return_reason", `STIR_SHAKEN(0,verify_result)`
+ in the dialplan will return "invalid_or_no_callerid".
+
+ * If the endpoint's failure_action is "reject_request", the call will be
+ rejected with `433 "Anonymity Disallowed"`.
+
+ * If the endpoint's failure_action is "continue_return_reason", the call will
+ continue but a `Reason: STIR; cause=433; text="Anonymity Disallowed"`
+ header will be added to the next provisional or final response.
+
+ Resolves: #1112
+
+#### resource_channels.c: Fix memory leak in ast_ari_channels_external_media.
+ Author: George Joseph
+ Date: 2025-02-04
+
+ Between ast_ari_channels_external_media(), external_media_rtp_udp(),
+ and external_media_audiosocket_tcp(), the `variables` structure being passed
+ around wasn't being cleaned up properly when there was a failure.
+
+ * In ast_ari_channels_external_media(), the `variables` structure is now
+ defined with RAII_VAR to ensure it always gets cleaned up.
+
+ * The ast_variables_destroy() call was removed from external_media_rtp_udp().
+
+ * The ast_variables_destroy() call was removed from
+ external_media_audiosocket_tcp(), its `endpoint` allocation was changed to
+ to use ast_asprintf() as external_media_rtp_udp() does, and it now
+ returns an error on failure.
+
+ * ast_ari_channels_external_media() now checks the new return code from
+ external_media_audiosocket_tcp() and sets the appropriate error response.
+
+ Resolves: #1109
+
+#### ari/pjsip: Make it possible to control transfers through ARI
+ Author: Holger Hans Peter Freyther
+ Date: 2024-06-15
+
+ Introduce a ChannelTransfer event and the ability to notify progress to
+ ARI. Implement emitting this event from the PJSIP channel instead of
+ handling the transfer in Asterisk when configured.
+
+ Introduce a dialplan function to the PJSIP channel to switch between the
+ "core" and "ari-only" behavior.
+
+ UserNote: Call transfers on the PJSIP channel can now be controlled by
+ ARI. This can be enabled by using the PJSIP_TRANSFER_HANDLING(ari-only)
+ dialplan function.
+
+
+#### channel.c: Remove dead AST_GENERATOR_FD code.
+ Author: Sean Bright
+ Date: 2025-02-06
+
+ Nothing ever sets the `AST_GENERATOR_FD`, so this block of code will
+ never execute. It also is the only place where the `generate` callback
+ is called with the channel lock held which made it difficult to reason
+ about the thread safety of `ast_generator`s.
+
+ In passing, also note that `AST_AGENT_FD` isn't used either.
+
+
+#### func_strings.c: Prevent SEGV in HASH single-argument mode.
+ Author: George Joseph
+ Date: 2025-01-30
+
+ When in single-argument mode (very rarely used), a malformation of a column
+ name (also very rare) could cause a NULL to be returned when retrieving the
+ channel variable for that column. Passing that to strncat causes a SEGV. We
+ now check for the NULL and print a warning message.
+
+ Resolves: #1101
+
+#### docs: Add version information to AGI command XML elements.
+ Author: George Joseph
+ Date: 2025-01-24
+
+ This process was a bit different than the others because everything
+ is in the same file, there's an array that contains the command
+ names and their handler functions, and the last command was created
+ over 15 years ago.
+
+ * Dump a `git blame` of res/res_agi.c from BEFORE the handle_* prototypes
+ were changed.
+ * Create a command <> handler function xref by parsing the the agi_command
+ array.
+ * For each entry, grep the function definition line "static int handle_*"
+ from the git blame output and capture the commit. This will be the
+ commit the command was created in.
+ * Do a `git tag --contains | sort -V | head -1` to get the
+ tag the function was created in.
+ * Add a single since/version element to the command XML. Multiple versions
+ aren't supported here because the branching and tagging scheme changed
+ several times in the 2000's.
+
+
+#### docs: Fix minor typo in MixMonitor AMI action
+ Author: Jeremy Lainé
+ Date: 2025-01-28
+
+ The `Options` argument was erroneously documented as lowercase
+ `options`.
+
+
+#### utils: Disable old style definition warnings for libdb.
+ Author: Naveen Albert
+ Date: 2025-01-23
+
+ Newer versions of gcc now warn about old style definitions, such
+ as those in libdb, which causes compilation failure with DEVMODE
+ enabled. Ignore these warnings for libdb.
+
+ Resolves: #1085
+
+#### rtp.conf.sample: Correct stunaddr example.
+ Author: fabriziopicconi
+ Date: 2024-09-25
+
+
+#### docs: Add version information to ARI resources and methods.
+ Author: George Joseph
+ Date: 2025-01-27
+
+ * Dump a git blame of each file in rest-api/api-docs.
+
+ * Get the commit for each "resourcePath" and "httpMethod" entry.
+
+ * Find the tags for each commit (same as other processes).
+
+ * Insert a "since" array after each "resourcePath" and "httpMethod" entry.
+
+
+#### docs: Indent tags.
+ Author: Sean Bright
+ Date: 2025-01-23
+
+ Also updates the 'since' of applications/functions that existed before
+ XML documentation was introduced (1.6.2.0).
+
+
diff --git a/README.html b/README.html
new file mode 100644
index 0000000000..3c36920d6d
--- /dev/null
+++ b/README.html
@@ -0,0 +1,174 @@
+Readme for asterisk-22.3.0-rc1
+The Asterisk(R) Open Source PBX
+By Mark Spencer <markster@digium.com> and the Asterisk.org developer community.
+Copyright (C) 2001-2025 Sangoma Technologies Corporation and other copyright holders.
+
+SECURITY
+It is imperative that you read and fully understand the contents of
+the security information document before you attempt to configure and run
+an Asterisk server.
+See Important Security Considerations for more information.
+WHAT IS ASTERISK ?
+Asterisk is an Open Source PBX and telephony toolkit. It is, in a
+sense, middleware between Internet and telephony channels on the bottom,
+and Internet and telephony applications at the top. However, Asterisk supports
+more telephony interfaces than just Internet telephony. Asterisk also has a
+vast amount of support for traditional PSTN telephony, as well.
+For more information on the project itself, please visit the Asterisk
+Home Page and the official
+Asterisk Documentation.
+SUPPORTED OPERATING SYSTEMS
+Linux
+The Asterisk Open Source PBX is developed and tested primarily on the
+GNU/Linux operating system, and is supported on every major GNU/Linux
+distribution.
+Others
+Asterisk has also been 'ported' and reportedly runs properly on other
+operating systems as well, Apple's Mac OS X, and the BSD variants.
+GETTING STARTED
+Most users are using VoIP/SIP exclusively these days but if you need to
+interface to TDM or analog services or devices, be sure you've got supported
+hardware.
+Supported telephony hardware includes:
+* All Analog and Digital Interface cards from Sangoma
+* Any full duplex sound card supported by PortAudio
+* The Xorcom Astribank channel bank
+UPGRADING FROM AN EARLIER VERSION
+If you are updating from a previous version of Asterisk, make sure you
+read the Change Logs.
+
+Change Logs
+
+
+NEW INSTALLATIONS
+Ensure that your system contains a compatible compiler and development
+libraries. Asterisk requires either the GNU Compiler Collection (GCC) version
+4.1 or higher, or a compiler that supports the C99 specification and some of
+the gcc language extensions. In addition, your system needs to have the C
+library headers available, and the headers and libraries for ncurses.
+There are many modules that have additional dependencies. To see what
+libraries are being looked for, see ./configure --help
, or run
+make menuselect
to view the dependencies for specific modules.
+On many distributions, these dependencies are installed by packages with names
+like 'glibc-devel', 'ncurses-devel', 'openssl-devel' and 'zlib-devel'
+or similar. The contrib/scripts/install_prereq
script can be used to install
+the dependencies for most Debian and Redhat based Linux distributions.
+The script also handles SUSE, Arch, Gentoo, FreeBSD, NetBSD and OpenBSD but
+those distributions mightnoit have complete support or they might be out of date.
+So, let's proceed:
+
+-
+
Read the documentation.
+The Asterisk Documentation website has full
+information for building, installing, configuring and running Asterisk.
+
+-
+
Run ./configure
+Execute the configure script to guess values for system-dependent
+variables used during compilation. If the script indicates that some required
+components are missing, you can run ./contrib/scripts/install_prereq install
+to install the necessary components. Note that this will install all dependencies
+for every functionality of Asterisk. After running the script, you will need
+to rerun ./configure
.
+
+-
+
Run make menuselect
+This is needed if you want to select the modules that will be compiled and to
+check dependencies for various optional modules.
+
+-
+
Run make
+Assuming the build completes successfully:
+
+-
+
Run make install
+If this is your first time working with Asterisk, you may wish to install
+the sample PBX, with demonstration extensions, etc. If so, run:
+
+-
+
Run make samples
+Doing so will overwrite any existing configuration files you have installed.
+
+-
+
Finally, you can launch Asterisk in the foreground mode (not a daemon) with
+asterisk -vvvc
+You'll see a bunch of verbose messages fly by your screen as Asterisk
+initializes (that's the "very very verbose" mode). When it's ready, if
+you specified the "c" then you'll get a command line console, that looks
+like this:
+*CLI>
+You can type core show help
at any time to get help with the system. For help
+with a specific command, type core show help <command>
.
+
+
+man asterisk
at the Unix/Linux command prompt will give you detailed
+information on how to start and stop Asterisk, as well as all the command
+line options for starting Asterisk.
+ABOUT CONFIGURATION FILES
+All Asterisk configuration files share a common format. Comments are
+delimited by ;
(since #
of course, being a DTMF digit, may occur in
+many places). A configuration file is divided into sections whose names
+appear in []
's. Each section typically contains statements in the form
+variable = value
although you may see variable => value
in older samples.
+SPECIAL NOTE ON TIME
+Those using SIP phones should be aware that Asterisk is sensitive to
+large jumps in time. Manually changing the system time using date(1)
+(or other similar commands) may cause SIP registrations and other
+internal processes to fail. For this reason, you should always use
+a time synchronization package to keep your system time accurate.
+All OS/distributions make one or more of the following packages
+available:
+
+- ntpd/ntpsec
+- chronyd
+- systemd-timesyncd
+
+Be sure to install and configure one (and only one) of them.
+FILE DESCRIPTORS
+Depending on the size of your system and your configuration,
+Asterisk can consume a large number of file descriptors. In UNIX,
+file descriptors are used for more than just files on disk. File
+descriptors are also used for handling network communication
+(e.g. SIP, IAX2, or H.323 calls) and hardware access (e.g. analog and
+digital trunk hardware). Asterisk accesses many on-disk files for
+everything from configuration information to voicemail storage.
+Most systems limit the number of file descriptors that Asterisk can
+have open at one time. This can limit the number of simultaneous
+calls that your system can handle. For example, if the limit is set
+at 1024 (a common default value) Asterisk can handle approximately 150
+SIP calls simultaneously. To change the number of file descriptors
+follow the instructions for your system below:
+PAM-BASED LINUX SYSTEM
+If your system uses PAM (Pluggable Authentication Modules) edit
+/etc/security/limits.conf
. Add these lines to the bottom of the file:
+root soft nofile 4096
+root hard nofile 8196
+asterisk soft nofile 4096
+asterisk hard nofile 8196
+
+(adjust the numbers to taste). You may need to reboot the system for
+these changes to take effect.
+GENERIC UNIX SYSTEM
+If there are no instructions specifically adapted to your system
+above you can try adding the command ulimit -n 8192
to the script
+that starts Asterisk.
+MORE INFORMATION
+Visit the Asterisk Documentation website
+for more documentation on various features and please read all the
+configuration samples that include documentation on the configuration options.
+Finally, you may wish to join the
+Asterisk Community Forums
+Welcome to the growing worldwide community of Asterisk users!
+ Mark Spencer, and the Asterisk.org development community
+
+
+Asterisk is a trademark of Sangoma Technologies Corporation
+[Sangoma]
+[Home Page]
+[Support]
+[Documentation]
+[Community Forums]
+[Release Notes]
+[Security]
+[Mailing List Archive]
+
diff --git a/README.md b/README.md
index 063db527e9..e65182c641 100644
--- a/README.md
+++ b/README.md
@@ -55,7 +55,7 @@ If you are updating from a previous version of Asterisk, make sure you
read the Change Logs.
-[Change Logs](https://downloads.asterisk.org/pub/telephony/asterisk)
+[Change Logs](ChangeLogs/ChangeLog-22.3.0-rc1.html)
### NEW INSTALLATIONS