Mike Bradeen [Sat, 19 Nov 2022 01:24:38 +0000 (18:24 -0700)]
res_monitor: Remove deprecated module.
ASTERISK-30303
Change-Id: I0462caefb4f9544e2e2baa23c498858310b52d50
Sean Bright [Thu, 5 Jan 2023 16:41:37 +0000 (11:41 -0500)]
app_playback.c: Fix PLAYBACKSTATUS regression.
In Asterisk 11, if a channel was redirected away during Playback(),
the PLAYBACKSTATUS variable would be set to SUCCESS. In Asterisk 12
(specifically commit
7d9871b3940fa50e85039aef6a8fb9870a7615b9) that
behavior was inadvertently changed and the same operation would result
in the PLAYBACKSTATUS variable being set to FAILED. The Asterisk 11
behavior has been restored.
Partial fix for ASTERISK~25661.
Change-Id: I53f54e56b59b61c99403a481b6cb8d88b5a559ff
George Joseph [Wed, 11 Jan 2023 17:17:02 +0000 (10:17 -0700)]
res_rtp_asterisk: Don't use double math to generate timestamps
Rounding issues with double math were causing rtp timestamp
slips in outgoing packets. We're now back to integer math
and are getting no more slips.
ASTERISK-30391
Change-Id: I6ba992b49ffdf9ebea074581dfa784a188c661a4
Mike Bradeen [Mon, 12 Dec 2022 17:12:57 +0000 (10:12 -0700)]
app_macro: Remove deprecated module.
For most modules that interacted with app_macro, this change is limited
to no longer looking for the current context from the macrocontext when
set. Additionally, the following modules are impacted:
app_dial - no longer supports M^ connected/redirecting macro
app_minivm - samples written using macro will no longer work.
The sample needs a re-write
app_queue - can no longer a macro on the called party's channel.
Use gosub which is currently supported
ccss - no callback macro, gosub only
app_voicemail - no macro support
channel - remove macrocontext and priority, no connected line or
redirection macro options
options - stdexten is deprecated to gosub as the default and only
pbx - removed macrolock
pbx_dundi - no longer look for macro
snmp - removed macro context, exten, and priority
ASTERISK-30304
Change-Id: I830daab293117179b8d61bd4df0d971a1b3d07f6
Alexei Gradinari [Fri, 6 Jan 2023 16:06:09 +0000 (11:06 -0500)]
format_wav: replace ast_log(LOG_DEBUG, ...) by ast_debug(1, ...)
Each playback of WAV files results in logging
"Skipping unknown block 'LIST'".
To prevent unnecessary flooding of this DEBUG log this patch replaces
ast_log(LOG_DEBUG, ...) by ast_debug(1, ...).
Change-Id: Iaa09cf19c5348a05385518fdb8cb181b45fe05f0
Igor Goncharovsky [Fri, 18 Nov 2022 02:16:50 +0000 (08:16 +0600)]
res_pjsip_rfc3326: Add SIP causes support for RFC3326
Add ability to set HANGUPCAUSE when SIP causecode received in BYE (in addition to currently supported Q.850).
ASTERISK-30319 #close
Change-Id: I3f55622dc680ce713a2ffb5a458ef5dd39fcf645
George Joseph [Fri, 28 Oct 2022 10:57:56 +0000 (04:57 -0600)]
res_rtp_asterisk: Asterisk Media Experience Score (MES)
-----------------
This commit reinstates MES with some casting fixes to the
functions in time.h that convert between doubles and timeval
structures. The casting issues were causing incorrect
timestamps to be calculated which caused transcoding from/to
G722 to produce bad or no audio.
ASTERISK-30391
-----------------
This module has been updated to provide additional
quality statistics in the form of an Asterisk
Media Experience Score. The score is avilable using
the same mechanisms you'd use to retrieve jitter, loss,
and rtt statistics. For more information about the
score and how to retrieve it, see
https://wiki.asterisk.org/wiki/display/AST/Media+Experience+Score
* Updated chan_pjsip to set quality channel variables when a
call ends.
* Updated channels/pjsip/dialplan_functions.c to add the ability
to retrieve the MES along with the existing rtcp stats when
using the CHANNEL dialplan function.
* Added the ast_debug_rtp_is_allowed and ast_debug_rtcp_is_allowed
checks for debugging purposes.
* Added several function to time.h for manipulating time-in-samples
and times represented as double seconds.
* Updated rtp_engine.c to pass through the MES when stats are
requested. Also debug output that dumps the stats when an
rtp instance is destroyed.
* Updated res_rtp_asterisk.c to implement the calculation of the
MES. In the process, also had to update the calculation of
jitter. Many debugging statements were also changed to be
more informative.
* Added a unit test for internal testing. The test should not be
run during normal operation and is disabled by default.
Change-Id: I4fce265965e68c3fdfeca55e614371ee69c65038
George Joseph [Mon, 9 Jan 2023 13:21:46 +0000 (07:21 -0600)]
Revert "res_rtp_asterisk: Asterisk Media Experience Score (MES)"
This reverts commit
e66c5da145b4545428fca768db7fb0921156af98.
Reason for revert: Issue when transcoding to/from g722
Change-Id: I12853c5b1d3a77f5b9200f41908fd238a17159dc
Boris P. Korzun [Wed, 28 Dec 2022 19:33:42 +0000 (22:33 +0300)]
http.c: Fix NULL pointer dereference bug
If native HTTP is disabled but HTTPS is enabled and status page enabled
too, Core/HTTP crashes while loading. 'global_http_server' references
to NULL, but the status page tries to dereference it.
The patch adds a check for HTTP is enabled.
ASTERISK-30379 #close
Change-Id: I11b02fc920b72aaed9c809fc43210523ccfdc249
Naveen Albert [Thu, 8 Dec 2022 21:44:25 +0000 (21:44 +0000)]
loader: Allow declined modules to be unloaded.
Currently, if a module declines to load, dlopen is called
to register the module but dlclose never gets called.
Furthermore, loader.c currently doesn't allow dlclose
to ever get called on the module, since it declined to
load and the unload function bails early in this case.
This can be problematic if a module is updated, since the
new module cannot be loaded into memory since we haven't
closed all references to it. To fix this, we now allow
modules to be unloaded, even if they never "loaded" in
Asterisk itself, so that dlclose is called and the module
can be properly cleaned up, allowing the updated module
to be loaded from scratch next time.
ASTERISK-30345 #close
Change-Id: Ifc743aadfa85ebe3284e02a63e124dafa64988d5
Naveen Albert [Mon, 15 Aug 2022 20:04:38 +0000 (20:04 +0000)]
app_broadcast: Add Broadcast application
Adds a new application, Broadcast, which can be used for
one-to-many transmission and many-to-one reception of
channel audio in Asterisk. This is similar to ChanSpy,
except it is designed for multiple channel targets instead
of a single one. This can make certain kinds of audio
manipulation more efficient and streamlined. New kinds
of audio injection impossible with ChanSpy are also made
possible.
ASTERISK-30180 #close
Change-Id: I7ba72f765dbab9b58deeae028baca3f4f8377726
Naveen Albert [Tue, 13 Dec 2022 20:35:19 +0000 (20:35 +0000)]
func_frame_trace: Print text for text frames.
Since text frames contain a text body, make FRAME_TRACE
more useful for text frames by actually printing the text.
ASTERISK-30353 #close
Change-Id: Ia6ce3d15cecd7a673a528d34faac86854a2bab50
Naveen Albert [Thu, 22 Dec 2022 01:58:54 +0000 (01:58 +0000)]
app_cdr: Remove deprecated application and option.
This removes the deprecated NoCDR application, which
was deprecated in Asterisk 12, having long been fully
superseded by the CDR_PROP function.
The deprecated e option to ResetCDR is also removed
for the same reason.
ASTERISK-30371 #close
Change-Id: Id9ed094d8e4baf98bcbc610035c2295bfafe9ec0
Holger Hans Peter Freyther [Fri, 16 Dec 2022 07:00:42 +0000 (15:00 +0800)]
res_http_media_cache: Do not crash when there is no extension
Do not crash when a URL has no path component as in this case the
ast_uri_path function will return NULL. Make the code cope with not
having a path.
The below would crash
> media cache create http://google.com /tmp/foo.wav
Thread 1 "asterisk" received signal SIGSEGV, Segmentation fault.
0x0000ffff836616cc in strrchr () from /lib/aarch64-linux-gnu/libc.so.6
(gdb) bt
#0 0x0000ffff836616cc in strrchr () from /lib/aarch64-linux-gnu/libc.so.6
#1 0x0000ffff43d43a78 in file_extension_from_string (str=<optimized out>, buffer=buffer@entry=0xffffca9973c0 "",
capacity=capacity@entry=64) at res_http_media_cache.c:288
#2 0x0000ffff43d43bac in file_extension_from_url_path (bucket_file=bucket_file@entry=0x3bf96568,
buffer=buffer@entry=0xffffca9973c0 "", capacity=capacity@entry=64) at res_http_media_cache.c:378
#3 0x0000ffff43d43c74 in bucket_file_set_extension (bucket_file=bucket_file@entry=0x3bf96568) at res_http_media_cache.c:392
#4 0x0000ffff43d43d10 in bucket_file_run_curl (bucket_file=0x3bf96568) at res_http_media_cache.c:555
#5 0x0000ffff43d43f74 in bucket_http_wizard_create (sorcery=<optimized out>, data=<optimized out>, object=<optimized out>)
at res_http_media_cache.c:613
#6 0x0000000000487638 in bucket_file_wizard_create (sorcery=<optimized out>, data=<optimized out>, object=<optimized out>)
at bucket.c:191
#7 0x0000000000554408 in sorcery_wizard_create (object_wizard=object_wizard@entry=0x3b9f0718,
details=details@entry=0xffffca9974a8) at sorcery.c:2027
#8 0x0000000000559698 in ast_sorcery_create (sorcery=<optimized out>, object=object@entry=0x3bf96568) at sorcery.c:2077
#9 0x00000000004893a4 in ast_bucket_file_create (file=file@entry=0x3bf96568) at bucket.c:727
#10 0x00000000004f877c in ast_media_cache_create_or_update (uri=0x3bfa1103 "https://google.com",
file_path=0x3bfa1116 "/tmp/foo.wav", metadata=metadata@entry=0x0) at media_cache.c:335
#11 0x00000000004f88ec in media_cache_handle_create_item (e=<optimized out>, cmd=<optimized out>, a=0xffffca9976b8)
at media_cache.c:640
ASTERISK-30375 #close
Change-Id: I6a9433688cb5d3d4be8758b7642d923bdde6c273
Naveen Albert [Thu, 22 Dec 2022 01:01:01 +0000 (01:01 +0000)]
manager: Fix appending variables.
The if statement here is always false after the for
loop finishes, so variables are never appended.
This removes that to properly append to the end
of the variable list.
ASTERISK-30351 #close
Reported by: Sebastian Gutierrez
Change-Id: I1b7f8b85a8918f6a814cb933a479d4278cf16199
Naveen Albert [Fri, 16 Dec 2022 18:25:52 +0000 (18:25 +0000)]
json.h: Add ast_json_object_real_get.
json.h contains macros to get a string and an integer
from a JSON object. However, the macro to do this for
JSON reals is missing. This adds that.
ASTERISK-30361 #close
Change-Id: I8d0e28d763febf27b05801cdc83b73282aa6ee7a
George Joseph [Fri, 23 Dec 2022 12:02:43 +0000 (05:02 -0700)]
res_pjsip_transport_websocket: Add remote port to transport
When Asterisk receives a new websocket conenction, it creates a new
pjsip transport for it and copies connection data into it. The
transport manager then uses the remote IP address and port on the
transport to create a monitor for each connection. However, the
remote port wasn't being copied, only the IP address which meant
that the transport manager was creating only 1 monitoring entry for
all websocket connections from the same IP address. Therefore, if
one of those connections failed, it deleted the transport taking
all the the connections from that same IP address with it.
* We now copy the remote port into the created transport and the
transport manager behaves correctly.
ASTERISK-30369
Change-Id: Ib506d40897ea6286455ac0be4dfbb0ed43b727e1
Mike Bradeen [Mon, 28 Nov 2022 20:05:21 +0000 (13:05 -0700)]
chan_sip: Remove deprecated module.
ASTERISK-30297
Change-Id: Ic700168c80b68879d9cee8bb07afe2712fb17996
George Joseph [Fri, 28 Oct 2022 10:57:56 +0000 (04:57 -0600)]
res_rtp_asterisk: Asterisk Media Experience Score (MES)
This module has been updated to provide additional
quality statistics in the form of an Asterisk
Media Experience Score. The score is avilable using
the same mechanisms you'd use to retrieve jitter, loss,
and rtt statistics. For more information about the
score and how to retrieve it, see
https://wiki.asterisk.org/wiki/display/AST/Media+Experience+Score
* Updated chan_pjsip to set quality channel variables when a
call ends.
* Updated channels/pjsip/dialplan_functions.c to add the ability
to retrieve the MES along with the existing rtcp stats when
using the CHANNEL dialplan function.
* Added the ast_debug_rtp_is_allowed and ast_debug_rtcp_is_allowed
checks for debugging purposes.
* Added several function to time.h for manipulating time-in-samples
and times represented as double seconds.
* Updated rtp_engine.c to pass through the MES when stats are
requested. Also debug output that dumps the stats when an
rtp instance is destroyed.
* Updated res_rtp_asterisk.c to implement the calculation of the
MES. In the process, also had to update the calculation of
jitter. Many debugging statements were also changed to be
more informative.
* Added a unit test for internal testing. The test should not be
run during normal operation and is disabled by default.
ASTERISK-30280
Change-Id: I458cb9a311e8e5dc1db769b8babbcf2e093f107a
Naveen Albert [Wed, 21 Dec 2022 15:01:20 +0000 (15:01 +0000)]
pbx_app: Update outdated pbx_exec channel snapshots.
pbx_exec makes a channel snapshot before executing applications.
This doesn't cause an issue during normal dialplan execution
where pbx_exec is called over and over again in succession.
However, if pbx_exec is called "one off", e.g. using
ast_pbx_exec_application, then a channel snapshot never ends
up getting made after the executed application returns, and
inaccurate snapshot information will linger for a while, causing
"core show channels", etc. to show erroneous info.
This is fixed by manually making a channel snapshot at the end
of ast_pbx_exec_application, since we anticipate that pbx_exec
might not get called again immediately.
ASTERISK-30367 #close
Change-Id: I2a5131053aa9d11badbc0ef2ef40b1f83d0af086
Naveen Albert [Sat, 26 Nov 2022 12:54:29 +0000 (12:54 +0000)]
res_pjsip_session: Use Caller ID for extension matching.
Currently, there is no Caller ID available to us when
checking for an extension match when handling INVITEs.
As a result, extension patterns that depend on the Caller ID
are not matched and calls may be incorrectly rejected.
The Caller ID is not available because the supplement that
adds Caller ID to the session does not execute until after
this check. Supplement callbacks cannot yet be executed
at this point since the session is not yet in the appropriate
state.
To fix this without impacting existing behavior, the Caller ID
number is now retrieved before attempting to pattern match.
This ensures pattern matching works correctly and there is
no behavior change to the way supplements are called.
ASTERISK-28767 #close
Change-Id: Iec7f5a3b90e51b65ccf74342f96bf80314b7cfc7
Naveen Albert [Tue, 29 Nov 2022 21:44:28 +0000 (21:44 +0000)]
pbx_builtins: Remove deprecated and defunct functionality.
This removes the ImportVar and SetAMAFlags applications
which have been deprecated since Asterisk 12, but were
never removed previously.
Additionally, it removes remnants of defunct options
that themselves were removed years ago.
ASTERISK-30335 #close
Change-Id: I749520c7b08d4c9d5eebbf640d4fbc81950eda8d
Ben Ford [Mon, 12 Dec 2022 18:42:17 +0000 (12:42 -0600)]
res_pjsip_sdp_rtp.c: Use correct timeout when put on hold.
When a call is put on hold and it has moh_passthrough and rtp_timeout
set on the endpoint, the wrong timeout will be used. rtp_timeout_hold is
expected to be used, but rtp_timeout is used instead. This change adds a
couple of checks for locally_held to determine if rtp_timeout_hold needs
to be used instead of rtp_timeout.
ASTERISK-30350
Change-Id: I7b106fc244332014216d12bba851cefe884cc25f
Naveen Albert [Mon, 14 Nov 2022 13:12:19 +0000 (13:12 +0000)]
app_voicemail_odbc: Fix string overflow warning.
Fixes a negative offset warning by initializing
the buffer to empty.
Additionally, although it doesn't currently complain
about it, the size of a buffer is increased to
accomodate the maximum size contents it could have.
ASTERISK-30240 #close
Change-Id: I8eecedf14d3f2a75864797f802277cac89a32877
Peter Fern [Tue, 22 Nov 2022 03:37:19 +0000 (14:37 +1100)]
streams: Ensure that stream is closed in ast_stream_and_wait on error
When ast_stream_and_wait returns an error (for example, when attempting
to stream to a channel after hangup) the stream is not closed, and
callers typically do not check the return code. This results in leaking
file descriptors, leading to resource exhaustion.
This change ensures that the stream is closed in case of error.
ASTERISK-30198 #close
Reported-by: Julien Alie
Change-Id: Ie46b67314590ad75154595a3d34d461060b2e803
Naveen Albert [Sat, 26 Nov 2022 00:03:57 +0000 (00:03 +0000)]
func_callerid: Warn about invalid redirecting reason.
Currently, if a user attempts to set a Caller ID related
function to an invalid value, a warning is emitted,
except for when setting the redirecting reason.
We now emit a warning if we were unable to successfully
parse the user-provided reason.
ASTERISK-30332 #close
Change-Id: Ic341f5d5f7303b6f1115549be64db58a85944f5a
Naveen Albert [Sat, 10 Dec 2022 22:51:11 +0000 (22:51 +0000)]
app_sendtext: Remove references to removed applications.
Removes see-also references to applications that don't
exist anymore (removed in Asterisk 19),
so these dead links don't show up on the wiki.
ASTERISK-30347 #close
Change-Id: I9539bc30f57cd65aa4e2d5ce8185eafa09567909
Igor Goncharovsky [Fri, 4 Nov 2022 10:11:07 +0000 (16:11 +0600)]
res_pjsip: Fix path usage in case dialing with '@'
Fix aor lookup on sip path addition. Issue happens in case of dialing
with @ and overriding user part of RURI.
ASTERISK-30100 #close
Reported-by: Yury Kirsanov
Change-Id: I3f2c42a583578c94397b113e32ca3ebf2d600e13
Alexandre Fournier [Fri, 9 Dec 2022 19:37:13 +0000 (14:37 -0500)]
res_geoloc: fix NULL pointer dereference bug
The `ast_geoloc_datastore_add_eprofile` function does not return 0 on
success, it returns the size of the underlying datastore. This means
that the datastore will be freed and its pointer set to NULL when no
error occured at all.
ASTERISK-30346
Change-Id: Iea9b209bd1244cc57b903b9496cb680c356e4bb9
Joshua C. Colp [Tue, 13 Dec 2022 15:25:17 +0000 (11:25 -0400)]
res_pjsip_aoc: Don't assume a body exists on responses.
When adding AOC to an outgoing response the code
assumed that a body would exist for comparing the
Content-Type. This isn't always true.
The code now checks to make sure the response has
a body before checking the Content-Type.
ASTERISK-21502
Change-Id: Iaead371434fc3bc693dad487228106a7d7a5ac76
Naveen Albert [Mon, 12 Dec 2022 15:16:17 +0000 (15:16 +0000)]
app_if: Fix format truncation errors.
Fixes format truncation warnings in gcc 12.2.1.
ASTERISK-30349 #close
Change-Id: I42be4edf0284358b906e765d1966b6b9d66e1d3c
Mike Bradeen [Mon, 14 Nov 2022 19:44:09 +0000 (12:44 -0700)]
chan_alsa: Remove deprecated module.
ASTERISK-30298
Change-Id: I5c8afb781528afdf55d237e3bffa5e4a862ae8c7
Michael Kuron [Tue, 1 Nov 2022 20:37:30 +0000 (21:37 +0100)]
manager: AOC-S support for AOCMessage
ASTERISK-21502
Change-Id: I051b778f8c862d3b4794d28f2f3d782316707b08
Mike Bradeen [Tue, 15 Nov 2022 17:03:21 +0000 (10:03 -0700)]
chan_mgcp: Remove deprecated module.
Also removes res_pktcops to avoid merge conflicts
with ASTERISK~30301.
ASTERISK-30299
Change-Id: I41a316d327646a197b6f112f7f637aceb5111b41
Michael Kuron [Sun, 23 Oct 2022 09:42:34 +0000 (11:42 +0200)]
res_pjsip_aoc: New module for sending advice-of-charge with chan_pjsip
chan_sip supported sending AOC-D and AOC-E information in SIP INFO
messages in an "AOC" header in a format that was originally defined by
Snom. In the meantime, ETSI TS 124 647 introduced an XML-based AOC
format that is supported by devices from multiple vendors, including
Snom phones with firmware >= 8.4.2 (released in 2010).
This commit adds a new res_pjsip_aoc module that inserts AOC information
into outgoing messages or sends SIP INFO messages as described below.
It also fixes a small issue in res_pjsip_session which didn't always
call session supplements on outgoing_response.
* AOC-S in the 180/183/200 responses to an INVITE request
* AOC-S in SIP INFO (if a 200 response has already been sent or if the
INVITE was sent by Asterisk)
* AOC-D in SIP INFO
* AOC-D in the 200 response to a BYE request (if the client hangs up)
* AOC-D in a BYE request (if Asterisk hangs up)
* AOC-E in the 200 response to a BYE request (if the client hangs up)
* AOC-E in a BYE request (if Asterisk hangs up)
The specification defines one more, AOC-S in an INVITE request, which
is not implemented here because it is not currently possible in
Asterisk to have AOC data ready at this point in call setup. Once
specifying AOC-S via the dialplan or passing it through from another
SIP channel's INVITE is possible, that might be added.
The SIP INFO requests are sent out immediately when the AOC indication
is received. The others are inserted into an appropriate outgoing
message whenever that is ready to be sent. In the latter case, the XML
is stored in a channel variable at the time the AOC indication is
received. Depending on where the AOC indications are coming from (e.g.
PRI or AMI), it may not always be possible to guarantee that the AOC-E
is available in time for the BYE.
Successfully tested AOC-D and both variants of AOC-E with a Snom D735
running firmware 10.1.127.10. It does not appear to properly support
AOC-S however, so that could only be tested by inspecting SIP traces.
ASTERISK-21502 #close
Reported-by: Matt Jordan <mjordan@digium.com>
Change-Id: Iebb7ad0d5f88526bc6629d3a1f9f11665434d333
Naveen Albert [Mon, 21 Nov 2022 18:53:49 +0000 (18:53 +0000)]
res_hep: Add support for named capture agents.
Adds support for the capture agent name field
of the Homer protocol to Asterisk by allowing
users to specify a name that will be sent to
the HEP server.
ASTERISK-30322 #close
Change-Id: I6136583017f9dd08daeb8be02f60fb8df4639a2b
Marcel Wagner [Fri, 25 Nov 2022 09:59:07 +0000 (10:59 +0100)]
res_pjsip: Fix typo in from_domain documentation
This fixes a small typo in the from_domain documentation on the endpoint documentation
ASTERISK-30328 #close
Change-Id: Ia6f0897c3f5cab899ef2cde6b3ac07265b8beb21
Naveen Albert [Mon, 28 Jun 2021 16:56:18 +0000 (16:56 +0000)]
app_if: Adds conditional branch applications
Adds the If, ElseIf, Else, ExitIf, and EndIf
applications for conditional execution
of a block of dialplan, similar to the While,
EndWhile, and ExitWhile applications. The
appropriate branch is executed at most once
if available and may be broken out of while
inside.
ASTERISK-29497
Change-Id: I3aa3bd35a5add82465c6ee9bd86b64601f0e1f49
Naveen Albert [Mon, 17 Oct 2022 00:33:44 +0000 (00:33 +0000)]
res_pjsip_session.c: Map empty extensions in INVITEs to s.
Some SIP devices use an empty extension for PLAR functionality.
Rather than rejecting these empty extensions, we now use the s
extension for such calls to mirror the existing PLAR functionality
in Asterisk (e.g. chan_dahdi).
ASTERISK-30265 #close
Change-Id: I0861a405cd49bbbf532b52f7b47f0e2810832590
Marcel Wagner [Thu, 17 Nov 2022 19:30:45 +0000 (20:30 +0100)]
res_pjsip: Update contact_user to point out default
Updates the documentation for the 'contact_user' field to point out the
default outbound contact if no contact_user is specified 's'
ASTERISK-30316 #close
Change-Id: I61f24fb9164e4d07e05908a2511805281874c876
Naveen Albert [Thu, 21 Jul 2022 19:07:04 +0000 (19:07 +0000)]
res_pjsip_header_funcs: Add custom parameter support.
Adds support for custom URI and header parameters
in the From header in PJSIP. Parameters can be
both set and read using this function.
ASTERISK-30150 #close
Change-Id: Ifb1bc3c512ad5f6faeaebd7817f004a2ecbd6428
Naveen Albert [Thu, 3 Nov 2022 20:28:23 +0000 (20:28 +0000)]
app_voicemail: Fix missing email in msg_create_from_file.
msg_create_from_file currently does not dispatch emails,
which means that applications using this function, such
as MixMonitor, will not trigger notifications to users
(only AMI events are sent our currently). This is inconsistent
with other ways users can receive voicemail.
This is fixed by adding an option that attempts to send
an email and falling back to just the notifications as
done now if that fails. The existing behavior remains
the default.
ASTERISK-30283 #close
Change-Id: I597cbb9cf971a18d8776172b26ab187dc096a5c7
Joshua C. Colp [Thu, 8 Dec 2022 10:33:02 +0000 (06:33 -0400)]
ari: Destroy body variables in channel create.
When passing a JSON body to the 'create' channel route
it would be converted into Asterisk variables, but never
freed resulting in a memory leak.
This change makes it so that the variables are freed in
all cases.
ASTERISK-30344
Change-Id: I924dbd866a01c6073e2d6fb846ccaa27ef72d49d
Naveen Albert [Wed, 23 Nov 2022 22:59:16 +0000 (22:59 +0000)]
res_adsi: Fix major regression caused by media format rearchitecture.
The commit that rearchitected media formats,
a2c912e9972c91973ea66902d217746133f96026 (ASTERISK_23114)
introduced a regression by improperly translating code in res_adsi.c.
In particular, the pointer to the frame buffer was initialized
at the top of adsi_careful_send, rather than dynamically updating it
for each frame, as is required.
This resulted in the first frame being repeatedly sent,
rather than advancing through the frames.
This corrupted the transmission of the CAS to the CPE,
which meant that CPE would never respond with the DTMF acknowledgment,
effectively completely breaking ADSI functionality.
This issue is now fixed, and ADSI now works properly again.
ASTERISK-29793 #close
Change-Id: Icdeddf733eda2981c98712d1ac9cddc0db507dbe
Naveen Albert [Sun, 13 Nov 2022 22:15:07 +0000 (22:15 +0000)]
func_presencestate: Fix invalid memory access.
When parsing information from AstDB while loading,
it is possible that certain pointers are never
set, which leads to invalid memory access and
then, fatally, invalid free attempts on this memory.
We now initialize to NULL to prevent this.
ASTERISK-30311 #close
Change-Id: I6120681d04fd2c12a9473f35ce95a1f8e74e3929
Naveen Albert [Thu, 1 Dec 2022 11:54:23 +0000 (11:54 +0000)]
sig_analog: Fix no timeout duration.
ASTERISK_28702 previously attempted to fix an
issue with flash hook hold timing out after
just under 17 minutes, when it should have never
been timing out. It fixed this by changing 999999
to INT_MAX, but it did so in chan_dahdi, which
is the wrong place since ss_thread is now in
sig_analog and the one in chan_dahdi is mostly
dead code.
This fixes this by porting the fix to sig_analog.
ASTERISK-30336 #close
Change-Id: I05eb69cc0b5319d357842a70bd26ef64d145cb15
Naveen Albert [Sat, 5 Nov 2022 12:11:08 +0000 (12:11 +0000)]
xmldoc: Allow XML docs to be reloaded.
The XML docs are currently only loaded on
startup with no way to update them during runtime.
This makes it impossible to load modules that
use ACO/Sorcery (which require documentation)
if they are added to the source tree and built while
Asterisk is running (e.g. external modules).
This adds a CLI command to reload the XML docs
during runtime so that documentation can be updated
without a full restart of Asterisk.
ASTERISK-30289 #close
Change-Id: I4f265b0e5517e757c5453a0f241201a5788d3a07
Naveen Albert [Thu, 24 Nov 2022 15:56:55 +0000 (15:56 +0000)]
rtp_engine.h: Update examples using ast_format_set.
This file includes some doxygen comments referencing
ast_format_set. This is an obsolete API that was
removed years back, but documentation was not fully
updated to reflect that. These examples are
updated to the current way of doing things
(using the format cache).
ASTERISK-30327 #close
Change-Id: I570f3b8007fa17ba470cc7117f44bfe7c555d2f7
Mike Bradeen [Fri, 18 Nov 2022 20:06:31 +0000 (13:06 -0700)]
app_osplookup: Remove deprecated module.
ASTERISK-30302
Change-Id: I2268189646fa0b587675d8619322818143172474
Mike Bradeen [Wed, 16 Nov 2022 15:51:25 +0000 (08:51 -0700)]
chan_skinny: Remove deprecated module.
ASTERISK-30300
Change-Id: I8be11455010b8ec552e62b0719368342e8a1bae9
Naveen Albert [Fri, 4 Nov 2022 11:04:08 +0000 (11:04 +0000)]
app_mixmonitor: Add option to use real Caller ID for voicemail.
MixMonitor currently uses the Connected Line as the Caller ID
for voicemails. This is due to the implementation being written
this way for use with Digium phones. However, in general this
is not correct for generic usage in the dialplan, and people
may need the real Caller ID instead. This adds an option to do that.
ASTERISK-30286 #close
Change-Id: I3d0ce76dfe75e2a614e0f709ab27acbd2478267c
Mike Bradeen [Mon, 3 Oct 2022 18:54:40 +0000 (12:54 -0600)]
manager: prevent file access outside of config dir
Add live_dangerously flag to manager and use this flag to
determine if a configuation file outside of AST_CONFIG_DIR
should be read.
ASTERISK-30176
Change-Id: I46b26af4047433b49ae5c8a85cb8cda806a07404
(cherry picked from commit
81f10e847efdbe8ec264062ee234e1098c29b3f6)
George Joseph [Mon, 10 Oct 2022 14:35:54 +0000 (08:35 -0600)]
pjsip_transport_events: Fix possible use after free on transport
It was possible for a module that registered for transport monitor
events to pass in a pjsip_transport that had already been freed.
This caused pjsip_transport_events to crash when looking up the
monitor for the transport. The fix is a two pronged approach.
1. We now increment the reference count on pjsip_transports when we
create monitors for them, then decrement the count when the
transport is going to be destroyed.
2. There are now APIs to register and unregister monitor callbacks
by "transport key" which is a string concatenation of the remote ip
address and port. This way the module needing to monitor the
transport doesn't have to hold on to the transport object itself to
unregister. It just has to save the transport_key.
* Added the pjsip_transport reference increment and decrement.
* Changed the internal transport monitor container key from the
transport->obj_name (which may not be unique anyway) to the
transport_key.
* Added a helper macro AST_SIP_MAKE_REMOTE_IPADDR_PORT_STR() that
fills a buffer with the transport_key using a passed-in
pjsip_transport.
* Added the following functions:
ast_sip_transport_monitor_register_key
ast_sip_transport_monitor_register_replace_key
ast_sip_transport_monitor_unregister_key
and marked their non-key counterparts as deprecated.
* Updated res_pjsip_pubsub and res_pjsip_outbound_register to use
the new "key" monitor functions.
NOTE: res_pjsip_registrar also uses the transport monitor
functionality but doesn't have a persistent object other than
contact to store a transport key. At this time, it continues to
use the non-key monitor functions.
ASTERISK-30244
Change-Id: I1a20baf2a8643c272dcf819871d6c395f148f00b
(cherry picked from commit
7684c9e907fb85f5c58b025d9e385ad2600f12a2)
Ben Ford [Tue, 29 Nov 2022 20:02:26 +0000 (14:02 -0600)]
pjproject: 2.13 security fixes
Backports two security fixes (c4d3498 and 450baca) from pjproject 2.13.
ASTERISK-30338
Change-Id: I86fdc003d5d22cb66e7cc6dc3313a8194f27eb69
Naveen Albert [Fri, 11 Nov 2022 20:30:27 +0000 (20:30 +0000)]
pbx_builtins: Allow Answer to return immediately.
The Answer application currently waits for up to 500ms
for media, even if users specify a different timeout.
This adds an option to not wait for media on the channel
by doing a raw answer instead. The default 500ms threshold
is also documented.
ASTERISK-30308 #close
Change-Id: Id59cd340c44b8b8b2384c479e17e5123e917cba4
Naveen Albert [Fri, 11 Nov 2022 00:47:57 +0000 (00:47 +0000)]
chan_dahdi: Allow FXO channels to start immediately.
Currently, chan_dahdi will wait for at least one
ring before an incoming call can enter the dialplan.
This is generally necessary in order to receive
the Caller ID spill and/or distinctive ringing
detection.
However, if neither of these is required, then there
is nothing gained by waiting for one ring and this
unnecessarily delays call setup. Users can now
use immediate=yes to make FXO channels (FXS signaled)
begin processing dialplan as soon as Asterisk receives
the call.
ASTERISK-30305 #close
Change-Id: I20818b370b2e4892c7f40c8a8753fa06a81750b5
Maximilian Fridrich [Wed, 7 Sep 2022 12:06:55 +0000 (14:06 +0200)]
core & res_pjsip: Improve topology change handling.
This PR contains two relatively separate changes in channel.c and
res_pjsip_session.c which ensure that topology changes are not ignored
in cases where they should be handled.
For channel.c:
The function ast_channel_request_stream_topology_change only triggers a
stream topology request change indication, if the channel's topology
does not equal the requested topology. However, a channel could be in a
state where it is currently "negotiating" a new topology but hasn't
updated it yet, so the topology request change would be lost. Channels
need to be able to handle such situations internally and stream
topology requests should therefore always be passed on.
In the case of chan_pjsip for example, it queues a session refresh
(re-INVITE) if it is currently in the middle of a transaction or has
pending requests (among other reasons).
Now, ast_channel_request_stream_topology_change always indicates a
stream topology request change even if the requested topology equals the
channel's topology.
For res_pjsip_session.c:
The function resolve_refresh_media_states does not process stream state
changes if the delayed active state differs from the current active
state. I.e. if the currently active stream state has changed between the
time the sip session refresh request was queued and the time it is being
processed, the session refresh is ignored. However, res_pjsip_session
contains logic that ensures that session refreshes are queued and
re-queued correctly if a session refresh is currently not possible. So
this check is not necessary and led to some session refreshes being
lost.
Now, a session refresh is done even if the delayed active state differs
from the current active state and it is checked whether the delayed
pending state differs from the current active - because that means a
refresh is necessary.
Further, the unit test of resolve_refresh_media_states was adapted to
reflect the new behavior. I.e. the changes to delayed pending are
prioritized over the changes to current active because we want to
preserve the original intention of the pending state.
ASTERISK-30184
Change-Id: Icd0703295271089057717006730b555b9a1d4e5a
Naveen Albert [Sat, 24 Sep 2022 10:15:09 +0000 (10:15 +0000)]
sla: Prevent deadlock and crash due to autoservicing.
SLAStation currently autoservices the station channel before
creating a thread to actually dial the trunk. This leads
to duplicate servicing of the channel which causes assertions,
deadlocks, crashes, and moreover not the correct behavior.
Removing the autoservice prevents the crash, but if the station
hangs up before the trunk answers, the call hangs since the hangup
was never serviced on the channel.
This is fixed by not autoservicing the channel, but instead
servicing it in the thread dialing the trunk, since it is doing
so synchronously to begin with. Instead of sleeping for 100ms
in a loop, we simply use the channel for timing, and abort
if it disappears.
The same issue also occurs with SLATrunk when a call is answered,
because ast_answer invokes ast_waitfor_nandfds. Thus, we use
ast_raw_answer instead which does not cause any conflict and allows
the call to be answered normally without thread blocking issues.
ASTERISK-29998 #close
Change-Id: Icc237d50354b5910000d2305901e86d2c87bb9d8
Jaco Kroon [Mon, 7 Nov 2022 15:30:00 +0000 (17:30 +0200)]
Build system: Avoid executable stack.
Found in res_geolocation, but I believe others may have similar issues,
thus not linking to a specific issue.
Essentially gcc doesn't mark the stack for being non-executable unless
it's compiling the source, this informs ld via gcc to mark the object as
not requiring an executable stack (which a binary blob obviously
doesn't).
ASTERISK-30321
Change-Id: I71bcc2fd1fe0c82a28b3257405d6f2b566fd9bfc
Signed-off-by: Jaco Kroon <jaco@uls.co.za>
Naveen Albert [Thu, 10 Nov 2022 12:11:53 +0000 (12:11 +0000)]
func_json: Fix memory leak.
A memory leak was present in func_json due to
using ast_json_free, which just calls ast_free,
as opposed to recursively freeing the JSON
object as needed. This is now fixed to use the
right free functions.
ASTERISK-30293 #close
Change-Id: I982324dde841dc9147c8d8ad35c8719daf418b49
Naveen Albert [Thu, 10 Nov 2022 12:20:43 +0000 (12:20 +0000)]
test_json: Remove duplicated static function.
Removes the function mkstemp_file and uses
ast_file_mkftemp from file.h instead.
ASTERISK-30295 #close
Change-Id: I7412ec06f88c39ee353bcdb8c976c2fcac546609
Joshua C. Colp [Wed, 16 Nov 2022 11:40:26 +0000 (07:40 -0400)]
res_agi: Respect "transmit_silence" option for "RECORD FILE".
The "RECORD FILE" command in res_agi has its own
implementation for actually doing the recording. This
has resulted in it not actually obeying the option
"transmit_silence" when recording.
This change causes it to now send silence if the
option is enabled.
ASTERISK-30314
Change-Id: Ib3a85601ff35d1b904f836691bad8a4b7e957174
Naveen Albert [Sun, 6 Nov 2022 16:39:30 +0000 (16:39 +0000)]
file.c: Don't emit warnings on winks.
Adds an ignore case for wink since it should
pass through with no warning.
ASTERISK-30290 #close
Change-Id: Ieb7e34daa717357ac5c93efb0059f6c2321f16ad
Naveen Albert [Thu, 3 Nov 2022 20:56:01 +0000 (20:56 +0000)]
app_mixmonitor: Add option to delete files on exit.
Adds an option that allows MixMonitor to delete
its copy of any recording files before exiting.
This can be handy in conjunction with options
like m, which copy the file elsewhere, and the
original files may no longer be needed.
ASTERISK-30284 #close
Change-Id: Ida093679c67e300efc154a97b6d8ec0f104e581e
Naveen Albert [Thu, 27 May 2021 19:32:21 +0000 (15:32 -0400)]
translate.c: Prefer better codecs upon translate ties.
If multiple codecs are available for the same
resource and the translation costs between
multiple codecs are the same, ties are
currently broken arbitrarily, which means a
lower quality codec would be used. This forces
Asterisk to explicitly use the higher quality
codec, ceteris paribus.
ASTERISK-29455
Change-Id: I4b7297e1baca7aac14fe4a3c7538e18e2dbe9fd6
Naveen Albert [Thu, 3 Nov 2022 22:01:16 +0000 (22:01 +0000)]
manager: Update ModuleCheck documentation.
The ModuleCheck XML documentation falsely
claims that the module's version number is returned.
This has not been the case since 14, since the version
number is not available anymore, but the documentation
was not changed at the time. It is now updated to
reflect this.
ASTERISK-30285 #close
Change-Id: Idde2d1205a11f2623fa1ddab192faa3dc4081e91
George Joseph [Wed, 2 Nov 2022 14:24:22 +0000 (08:24 -0600)]
runUnittests.sh: Save coredumps to proper directory
Fixed the specification of "outputdir" when calling ast_coredumper
so the txt files are saved in the correct place.
ASTERISK-30282
Change-Id: Ic631cb90c1e4c29d970c982dff45fda5e0eb15b6
Naveen Albert [Sat, 1 Oct 2022 19:49:20 +0000 (19:49 +0000)]
app_stack: Print proper exit location for PBXless channels.
When gosub is executed on channels without a PBX, the context,
extension, and priority are initialized to the channel driver's
default location for that endpoint. As a result, the last Return
will restore this location and the Gosub logs will print out bogus
information about our exit point.
To fix this, on channels that don't have a PBX, the execution
location is left intact on the last return if there are no
further stack frames left. This allows the correct location
to be printed out to the user, rather than the bogus default
context.
ASTERISK-30076 #close
Change-Id: I1d42a99c9aa9e3708d32718863175158a894e414
George Joseph [Wed, 2 Nov 2022 12:41:29 +0000 (06:41 -0600)]
chan_rtp: Make usage of ast_rtp_instance_get_local_address clearer
unicast_rtp_request() was setting the channel variables like this:
pbx_builtin_setvar_helper(chan, "UNICASTRTP_LOCAL_ADDRESS",
ast_sockaddr_stringify_addr(&local_address));
ast_rtp_instance_get_local_address(instance, &local_address);
pbx_builtin_setvar_helper(chan, "UNICASTRTP_LOCAL_PORT",
ast_sockaddr_stringify_port(&local_address));
...which made it appear that UNICASTRTP_LOCAL_ADDRESS was being
set before local_address was set. In fact, the address part of
local_address was set earlier in the function, just not the port.
This was confusing however so ast_rtp_instance_get_local_address()
is now being called before setting UNICASTRTP_LOCAL_ADDRESS.
ASTERISK-30281
Change-Id: I872ac49477100f4eb33891d46efc6ca21ec81aa4
Mike Bradeen [Thu, 13 Oct 2022 16:19:17 +0000 (10:19 -0600)]
res_pjsip: prevent crash on websocket disconnect
When a websocket (or potentially any stateful connection) is quickly
created then destroyed, it is possible that the qualify thread will
destroy the transaction before the initialzing thread is finished
with it.
Depending on the timing, this can cause an assertion within pjsip.
To prevent this, ast_send_stateful_response will now create the group
lock and add a reference to it before creating the transaction.
While this should resolve the crash, there is still the potential that
the contact will not be cleaned up properly, see:ASTERISK~29286. As a
result, the contact has to 'time out' before it will be removed.
ASTERISK-28689
Change-Id: Id050fded2247a04d8f0fc5b8a2cf3e5482cb8cee
Naveen Albert [Thu, 27 Oct 2022 11:32:12 +0000 (11:32 +0000)]
tcptls: Prevent crash when freeing OpenSSL errors.
write_openssl_error_to_log has been erroneously
using ast_free instead of free, which will
cause a crash when MALLOC_DEBUG is enabled since
the memory was not allocated by Asterisk's memory
manager. This changes it to use the actual free
function directly to avoid this.
ASTERISK-30278 #close
Change-Id: Iac8b6468b718075809c45d8ad16b101af21a474d
Igor Goncharovsky [Fri, 9 Sep 2022 17:20:18 +0000 (23:20 +0600)]
res_pjsip_outbound_registration: Allow to use multiple proxies for registration
Current registration code use pjsip_parse_uri to verify outbound_proxy
that is different from the reading this option for the endpoint. This
made value with multiple proxies invalid for registration pjsip settings.
Removing URI validation helps to use registration through multiple proxies.
ASTERISK-30217 #close
Change-Id: I064558e66f04b9f3260c46181812a01349761357
Naveen Albert [Sun, 23 Oct 2022 15:16:31 +0000 (15:16 +0000)]
tests: Fix compilation errors on 32-bit.
Fix compilation errors caused by using size_t
instead of uintmax_t and non-portable format
specifiers.
ASTERISK-30273 #close
Change-Id: I363e6057ef84d54b88af80d23ad6147eef9216ee
Henning Westerholt [Fri, 26 Aug 2022 08:59:16 +0000 (08:59 +0000)]
res_pjsip: return all codecs on a re-INVITE without SDP
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.
According to RFC 3261, section 14.2 we SHOULD return all codecs
on a re-INVITE without SDP
The PR proposes a new parameter to configure this behaviour:
all_codecs_on_empty_reinvite. It includes the code, documentation,
alembic migrations, CHANGES file and example configuration additions.
ASTERISK-30193 #close
Change-Id: I69763708d5039d512f391e296ee8a4d43a1e2148
Naveen Albert [Fri, 14 Oct 2022 22:24:00 +0000 (22:24 +0000)]
res_pjsip_notify: Add option support for AMI.
The PJSIP notify CLI commands allow for using
"options" configured in pjsip_notify.conf.
This allows these same options to be used in
AMI actions as well.
Additionally, as part of this improvement,
some repetitive common code is refactored.
ASTERISK-30263 #close
Change-Id: Ie4496b322b63b61eaf9672183a959ab99a04b6b5
Naveen Albert [Thu, 21 Jul 2022 00:03:34 +0000 (00:03 +0000)]
res_pjsip_logger: Add method-based logging option.
Expands the pjsip logger to support the ability to filter
by SIP message method. This can make certain types of SIP debugging
easier by only logging messages of particular method(s).
ASTERISK-30146 #close
Co-authored-by: Sean Bright <sean@seanbright.com>
Change-Id: I9c8cbb6fc8686ef21190eb42e08bc9a9b147707f
Frederic LE FOLL [Thu, 6 Oct 2022 16:51:36 +0000 (18:51 +0200)]
Dialing API: Cancel a running async thread, may not cancel all calls
race condition: ast_dial_join() may not cancel outgoing call, if
function is called just after called party answer and before
application execution (bit is_running_app not yet set).
This fix adds ast_softhangup() calls in addition to existing
pthread_kill() when is_running_app is not set.
ASTERISK-30258
Change-Id: Idbdd5c15122159661aa8e996a42d5800083131e4
Naveen Albert [Sun, 23 Oct 2022 22:46:24 +0000 (22:46 +0000)]
chan_dahdi: Fix unavailable channels returning busy.
This fixes dahdi_request to properly set the cause
code to CONGESTION instead of BUSY if no channels
were actually available.
Currently, the cause is erroneously set to busy
if the channel itself is found, regardless of its
current state. However, if the channel is not available
(e.g. T1 down, card not operable, etc.), then the
channel itself may not be in a functional state,
in which case CHANUNAVAIL is the correct cause to use.
This adds a simple check to ensure that busy tone
is only returned if a channel is encountered that
has an owner, since that is the only possible way
that a channel could actually be busy.
ASTERISK-30274 #close
Change-Id: Iad5870223c081240c925b19df8d6af136953b994
Naveen Albert [Sun, 16 Oct 2022 20:35:29 +0000 (20:35 +0000)]
res_pjsip_pubsub: Prevent removing subscriptions.
pjproject does not provide any mechanism of removing
event packages, which means that once a subscription
handler is registered, it is effectively permanent.
pjproject will assert if the same event package is
ever registered again, so currently unloading and
loading any Asterisk modules that use subscriptions
will cause a crash that is beyond our control.
For that reason, we now prevent users from being
able to unload these modules, to prevent them
from ever being loaded twice.
ASTERISK-30264 #close
Change-Id: I7fdcb1a5e44d38b7ba10c44259fe98f0ae9bc12c
Naveen Albert [Wed, 28 Sep 2022 12:38:37 +0000 (12:38 +0000)]
say: Don't prepend ampersand erroneously.
Some logic in say.c for determining if we need
to also add an ampersand for file seperation was faulty,
as non-successful files would increment the count, causing
a leading ampersand to be added improperly.
This is fixed, and a unit test that captures this regression
is also added.
ASTERISK-30248 #close
Change-Id: I02c1d3a11d82fe4ea8b462070cbd1effb5834d2b
Philip Prindeville [Fri, 16 Sep 2022 18:45:55 +0000 (12:45 -0600)]
res_crypto: handle unsafe private key files
ASTERISK-30213 #close
Change-Id: I4a77143d41615b7c4fc25bb1251c0a9cb87b417a
Mike Bradeen [Thu, 29 Sep 2022 20:55:20 +0000 (14:55 -0600)]
audiohook: add directional awareness
Add enum to allow setting optional direction. If set to only one
direction, only feed matching-direction frames to the associated
slin factory.
This prevents mangling the transcoder on non-mixed frames when the
READ and WRITE frames would have otherwise required it. Also
removes the need to mute or discard the un-wanted frames as they
are no longer added in the first place.
res_stasis_snoop is changed to use this addition to set direction
on audiohook based on spy direction.
If no direction is set, the ast_audiohook_init will init this enum
to BOTH which maintains existing functionality.
ASTERISK-30252
Change-Id: If8716bad334562a5d812be4eeb2a92e4f3be28eb
Naveen Albert [Wed, 1 Jun 2022 16:06:14 +0000 (16:06 +0000)]
cdr: Allow bridging and dial state changes to be ignored.
Allows bridging, parking, and dial messages to be globally
ignored for all CDRs such that only a single CDR record
is generated per channel.
This is useful when CDRs should endure for the lifetime of
an entire channel and bridging and dial updates in the
dialplan should not result in multiple CDR records being
created for the call. With the ignore bridging option,
bridging changes have no impact on the channel's CDRs.
With the ignore dial state option, multiple Dials and their
outcomes have no impact on the channel's CDRs. The
last disposition on the channel is preserved in the CDR,
so the actual disposition of the call remains available.
These two options can reduce the amount of "CDR hacks" that
have hitherto been necessary to ensure that CDR was not
"spoiled" by these messages if that was undesired, such as
putting a dummy optimization-disabled local channel between
the caller and the actual call and putting the CDR on the channel
in the middle to ensure that CDR would persist for the entire
call and properly record start, answer, and end times.
Enabling these options is desirable when calls correspond
to the entire lifetime of channels and the CDR should
reflect that.
Current default behavior remains unchanged.
ASTERISK-30091 #close
Change-Id: I393981af42732ec5ac3ff9266444abb453b7c832
Naveen Albert [Fri, 30 Sep 2022 11:24:19 +0000 (11:24 +0000)]
res_tonedetect: Add ringback support to TONE_DETECT.
Adds support for detecting audible ringback tone
to the TONE_DETECT function using the p option.
ASTERISK-30254 #close
Change-Id: Ie2329ff245248768367d26749c285fbe823f6414
Naveen Albert [Sat, 1 Oct 2022 22:08:12 +0000 (22:08 +0000)]
chan_dahdi: Resolve format truncation warning.
Fixes a format truncation warning in notify_message.
ASTERISK-30256 #close
Change-Id: I983a423c0214641ca4f8c9dfe0b19c47448fdee1
Philip Prindeville [Fri, 16 Sep 2022 23:29:36 +0000 (17:29 -0600)]
res_crypto: don't modify fname in try_load_key()
"fname" is passed in as a const char *, but strstr() mangles that
into a char *, and we were attempting to modify the string in place.
This is an unwanted (and undocumented) side-effect.
ASTERISK-30213
Change-Id: Ifa36d352aafeb7f9beec3f746332865c7d21e629
Philip Prindeville [Fri, 16 Sep 2022 03:45:22 +0000 (21:45 -0600)]
res_crypto: use ast_file_read_dirs() to iterate
ASTERISK-30213
Change-Id: I115f5f8942ffcfb23cd2559a55bac8a2eba081e0
George Joseph [Tue, 27 Sep 2022 14:35:35 +0000 (08:35 -0600)]
res_geolocation: Update wiki documentation
Also added a note to the geolocation.conf.sample file
and added a README to the res/res_geolocation/wiki
directory.
Change-Id: I89c3c5db8c0701b33127993622d5e4f904bddfbc
Maximilian Fridrich [Tue, 26 Jul 2022 12:01:04 +0000 (14:01 +0200)]
res_pjsip: Add mediasec capabilities.
This patch adds support for mediasec SIP headers and SDP attributes.
These are defined in RFC 3329, 3GPP TS 24.229 and
draft-dawes-sipcore-mediasec-parameter. The new features are
implemented so that a backbone for RFC 3329 is present to streamline
future work on RFC 3329.
With this patch, Asterisk can communicate with Deutsche Telekom trunks
which require these fields.
ASTERISK-30032
Change-Id: Ia7f5b5ba42db18074fdd5428c4e1838728586be2
Holger Hans Peter Freyther [Tue, 20 Sep 2022 00:53:18 +0000 (08:53 +0800)]
res_prometheus: Do not crash on invisible bridges
Avoid crashing by skipping invisible bridges and checking the
snapshot for a null pointer. In effect this is how the bridges
are enumerated in res/ari/resource_bridges.c already.
ASTERISK-30239
ASTERISK-30237
Change-Id: I58ef9f44036feded5966b5fc70ae754f8182883d
Naveen Albert [Sat, 24 Sep 2022 12:08:14 +0000 (12:08 +0000)]
db: Fix incorrect DB tree count for AMI.
The DBGetTree AMI action's ListItem previously
always reported 1, regardless of the count. This
is corrected to report the actual count.
ASTERISK-30245 #close
patches:
gettreecount.diff submitted by Birger Harzenetter (license 5870)
Change-Id: I46d8992710f1b8524426b1255f57d1ef4a4934d4
Naveen Albert [Mon, 19 Sep 2022 17:35:40 +0000 (17:35 +0000)]
res_pjsip_geolocation: Change some notices to debugs.
If geolocation is not in use for an endpoint, the NOTICE
log level is currently spammed with messages about this,
even though nothing is wrong and these messages provide
no real value. These log messages are therefore changed
to debugs.
ASTERISK-30241 #close
Change-Id: I656b355d812f67cc0f0fdf09b00b0e1458598bb4
Naveen Albert [Wed, 21 Sep 2022 23:17:13 +0000 (23:17 +0000)]
func_logic: Don't emit warning if both IF branches are empty.
The IF function currently emits warnings if both IF branches
are empty. However, there is no actual necessity that either
branch be non-empty as, unlike other conditional applications/
functions, nothing is inherently done with IF, and both
sides could legitimately be empty. The warning is thus turned
into a debug message.
ASTERISK-30243 #close
Change-Id: I5250625dd720f95e1859b5dfb933905d7e7a730e
Naveen Albert [Sun, 11 Sep 2022 22:13:02 +0000 (22:13 +0000)]
features: Add no answer option to Bridge.
Adds the n "no answer" option to the Bridge application
so that answer supervision can not automatically
be provided when Bridge is executed.
Additionally, a mechanism (dialplan variable)
is added to prevent bridge targets (typically the
target of a masquerade) from answering the channel
when they enter the bridge.
ASTERISK-30223 #close
Change-Id: I76f73fcd8e403bcd18f2abb40c658f537ac1ba6d
Naveen Albert [Fri, 9 Sep 2022 00:12:05 +0000 (00:12 +0000)]
app_bridgewait: Add option to not answer channel.
Adds the n option to not answer the channel when calling
BridgeWait, so the application can be used without
forcing answer supervision.
ASTERISK-30216 #close
Change-Id: I6b85ef300b1f7b5170f8537e2b10889cc2e6605a
Naveen Albert [Mon, 15 Aug 2022 19:59:02 +0000 (19:59 +0000)]
app_amd: Add option to play audio during AMD.
Adds an option that will play an audio file
to the party while AMD is running on the
channel, so the called party does not just
hear silence.
ASTERISK-30179 #close
Change-Id: I4af306274552b61b3d9f0883c33f698abd4699b6
Philip Prindeville [Fri, 16 Sep 2022 03:35:21 +0000 (21:35 -0600)]
test: initialize capture structure before freeing
ASTERISK-30232 #close
Change-Id: I2603e2cef8f93f6b0a6ef39f7eac744251bb3902
Naveen Albert [Mon, 17 May 2021 14:19:30 +0000 (10:19 -0400)]
func_export: Add EXPORT function
Adds the EXPORT function, which allows write
access to variables and functions on other
channels.
ASTERISK-29432 #close
Change-Id: I7492645ae4307553d0f586d78e13a4f586231fdf
Maximilian Fridrich [Tue, 26 Jul 2022 13:40:26 +0000 (15:40 +0200)]
res_pjsip: Add 100rel option "peer_supported".
This patch adds a new option to the 100rel parameter for pjsip
endpoints called "peer_supported". When an endpoint with this option
receives an incoming request and the request indicated support for the
100rel extension, then Asterisk will send 1xx responses reliably. If
the request did not indicate 100rel support, Asterisk sends 1xx
responses normally.
ASTERISK-30158
Change-Id: Id6d95ffa8f00dab118e0b386146e99f254f287ad
Jaco Kroon [Mon, 5 Sep 2022 06:59:30 +0000 (08:59 +0200)]
manager: be more aggressive about purging http sessions.
If we find that n_max (currently hard wired to 1) sessions were purged,
schedule the next purge for 1ms into the future rather than 5000ms (as
per current). This way we will purge up to 1000 sessions per second
rather than 1 every 5 seconds.
This mitigates a build-up of sessions should http sessions gets
established faster than 1 per 5 seconds.
Change-Id: I9820d39aa080109df44fe98c1325cafae48d54f5
Signed-off-by: Jaco Kroon <jaco@uls.co.za>