Queue members using dialplan hints as a state interface must handle
INUSE+RINGING hint as RINGINUSE devstate, and INUSE + ONHOLD as INUSE.
ASTERISK-28369
Change-Id: I127e06943d4b4f1afc518f9e396de77449992b9f
When a Transfer/REFER is executed, TRANSFERSTATUSPROTOCOL variable is
0 when no protocl specific error
SIP example of failure, 3xx-6xx for the SIP error code received
This allows applications to perform actions based on the failure
reason.
ASTERISK-29252 #close
Reported-by: Dan Cropp
Change-Id: Ia6a94784b4925628af122409cdd733c9f29abfc4
launch_monitor_thread is responsible for creating and initializing
the mixmonitor, and dependent data structures. There was one off
nominal path after the datastore gets created that triggers when
the channel being monitored is hung up prior to monitor starting
itself.
If this happened the monitor thread would not "launch", and the
mixmonitor object and associated objects are freed, including the
underlying datastore data object. However, the datastore itself was
not removed from the channel, so when the channel eventually gets
destroyed it tries to access the previously freed datastore data
and crashes.
This patch removes and frees datastore object itself from the channel
before freeing the mixmonitor object thus ensuring the channel does
not call it when destroyed.
ASTERISK-28947 #close
Change-Id: Id4f9e958956d62473ed5ff06c98ae3436e839ff8
The documentation in the wiki says there should be spyee-channel
information elements in the ChanSpyStop AMI event.
https://wiki.asterisk.org/wiki/x/Xc5uAg
However, this is not the case in Asterisk <= 16.10.0 Version. We're
using these Spyee* arguments since Asterisk 11.x, so these arguments
vanished in Asterisk 12 or higher.
For maximum compatibility, we still send the ChanSpyStop event even if
we are not able to find any 'Spyee' information.
ASTERISK-28883 #close
Change-Id: I81ce397a3fd614c094d043ffe5b1b1d76188835f
When using this option, answering the channel is deferred until
all prompts/greetings have been played and the caller is about
to leave their message.
ASTERISK-29118 #close
Change-Id: I41b9f0428783c0bd697c8c994f906d1e75ce9ddb
Operations that update queues when shared_lastcall is set lock the
queue in question, then have to lock the queues container to find the
other queues with the same member. On the other hand, __queues_show
(which is called by both the CLI and AMI) does the reverse. It locks
the queues container, then iterates over the queues locking each in
turn to display them. This creates a deadlock.
* Moved queue print logic from __queues_show to a separate function
that can be called for a single queue.
* Updated __queues_show so it doesn't need to lock or traverse
the queues container to show a single queue.
* Updated __queues_show to snap a copy of the queues container and iterate
over that instead of locking the queues container and iterating over
it while locked. This prevents us from having to hold both the
container lock and the queue locks at the same time. This also
allows us to sort the queue entries.
ASTERISK-29155
Change-Id: I78d4dc36728c2d7bc187b97d82673fc77f2bcf41
app_confbridge now has the ability to set the estimated bitrate on an
SFU bridge. To use it, set a bridge profile's remb_behavior to "force"
and set remb_estimated_bitrate to a rate in bits per second. The
remb_estimated_bitrate parameter is ignored if remb_behavior is something
other than "force".
Change-Id: Idce6464ff014a37ea3b82944452e56cc4d75ab0a
This fixes a bug introduced mistakenly in ASTERISK-25665:
If leave-empty is enabled, a call may sometimes be removed from
a queue without recording it as abandoned.
This causes Asterisk to not generate an abandon event for that
call, and for the queue abandoned counter to be incorrect.
ASTERISK-29043 #close
Change-Id: I1a71b81df78adff59af587f1d8483cf57df430c7
The name of the voicemail context was overwriting the name of the
subscribed mailbox. Fix by simplifying how we create the MWI
subscription.
ASTERISK-29029 #close
Change-Id: Ie8a7db6a0b68f3995b0846bbb733a21909ba44e5
This fixes the reseting members lastpause problem when realtime members is being used,
the function rt_handle_member_record was forcing the reset members lastpause because it
does not exist in realtime
ASTERISK-29034 #close
Change-Id: Ic9107e4456732a1f78412a32adb2ef87f5da40b5
Rather than putting messages into INBOX and then moving them to Urgent
later, put them directly in to the Urgent folder. This prevents
mailcmd from being skipped.
ASTERISK-27273 #close
Change-Id: I49934e093290d308506ab8d45a40ef705c5ae4f5
When stream support was added to Asterisk the stream state
was used inconsistently, resulting in odd behavior. This
was then standardized to be the state of a stream from the
perspective of Asterisk.
This change updates the StreamEcho dialplan application
to use the correct state, send only, since we are only
sending to the endpoint and not expecting them to send us
multiple video streams.
ASTERISK-28954
Change-Id: I35bfd533ef1184ffe62586b22bbd253c82872a56
Before this changeset, it was possible that a queue member (agent) was
called even though they just got out of a call, and wrapuptime seconds
hadn't passed yet.
This could happen if a member ended a call _between_ a new call attempt
and asterisk trying that particular member for a new call.
In that case, Asterisk would check the hangup time of the
call-before-the-last-call instead of the hangup time of the-last-call.
ASTERISK-28952
Change-Id: Ie0cab8f0e8d639c01cba633d4968ba19873d80b3
Because ring_entry() is not called, outgoing->chan is not touched here
either.
ASTERISK-28950
ASTERISK-28644
Change-Id: I564613715dfaf45af868251eb75a451f512af90f
This patch fixes a few compile warnings/errors that now occur when using gcc
10+.
Also, the Makefile.rules check to turn off partial inlining in gcc versions
greater or equal to 8.2.1 had a bug where it only it only checked against
versions with at least 3 numbers (ex: 8.2.1 vs 10). This patch now ensures
any version above the specified version is correctly compared.
Change-Id: I54718496eb0c3ce5bd6d427cd279a29e8d2825f9
When send_events is enabled for a user, we were leaking a reference
to the bridge channel in confbridge_manager.c:send_message(). This
also caused the bridge snapshot to not be destroyed.
Change-Id: I87a7ae9175e3cd29f6d6a8750e0ec5427bd98e97
Ensure that output buffers for the osp_convert_inout
function have sufficient space for additional data
such as brackets and ports.
ASTERISK-28804
Change-Id: Ie54c8241ff0cc653910539c2db00ff2a4869750b
Add a new "masquarade" channel event, and use it in app_queue to track unique id's.
Testcase is submitted as https://gerrit.asterisk.org/c/testsuite/+/14210
ASTERISK-28829 #close
ASTERISK-25844 #close
Change-Id: Ifc5f9f9fd70903f3c6e49738d3bc632b085d2df6
The gcc 10 -Wrestrict option was causing "overlap" errors when
snprintf was copying one char[256] structure member to another
char[256] member in the same structure.
Using ast_alloca instead of declaring the structure inline
solves the issue.
Here's a link to the "enhancement":
https://gcc.gnu.org/legacy-ml/gcc-patches/2019-10/msg00570.html
We may follow up with a gcc bug report.
Change-Id: Ie0099adcb0a9727bd9aa99e024dd912a67eaf534
Since Asterisk 14, app_fax did not compile at all because Asterisk
requires that not malloc but ast_malloc is used everywhere. However,
the system headers of SpanDSP use malloc. Because we cannot (and do
not need to) change system headers, let us ignore this.
ASTERISK-28848
Change-Id: I31f7a6b92a07032c5cef1c16b8901b107fe35546
When in a conference bridge it may be necessary to have
text messages disabled for specific participants or for
all. This change adds a configuration option, "text_messaging",
which can be used to enable or disable this on the
user profile. By default existing behavior is preserved
as it defaults to "yes".
ASTERISK-28841
Change-Id: I30b5d9ae6f4803881d1ed9300590d405e392bc13
Given a scenario where MixMonitor was initiated over AMI it
was possible for the channel and MixMonitor thread to remain
alive past hang up of the channel. This scenario required
the AMI initiated MixMonitor to retrieve the channel, a
hangup to occur on the channel in another thread, and then
for MixMonitor to actually start. If this occurred the
MixMonitor thread would remain alive indefinitely and
the channel reference would remain.
This change ensures that audiohooks are never able to
be attached to channels that have been hung up. An
additional fix has also been done in app_mixmonitor to
properly release the channel reference if this occurs.
ASTERISK-28780
Change-Id: I8044c06daa06f0f16607788c596f55623be26f58
When opening a file for writing, Asterisk silently converts filenames
ending with 'wav49' to 'WAV.' We aren't taking that in to account when
setting the MIXMONITOR_FILENAME variable in MixMonitor.
* If the user wants to write to a wav49 file, make sure that it is
reflected properly in MIXMONITOR_FILENAME.
* Add a note to the documentation describing this behavior.
* Add a note in main/file.c indicating that app_mixmonitor needs to be
changed if the logic in build_filename was changed.
ASTERISK-24798 #close
Reported by: xrobau
Change-Id: I384691ce624eb55c80a125b9ca206d2d691c574c
In af90afd90c, Japanese language support
was added to app_voicemail and main/say.c, but the leading whitespace
is not consistent with Asterisk coding guidelines. This patch fixes
that.
Whitespace only, no functional change.
ASTERISK~23324
Reported by: Kevin McCoy
Change-Id: I72c725f5930084673749bd7c9cc426a987f08e87
ast_store_realtime() is not NULL tolerant, so we need to initialize
the field values we pass to it to the empty string to avoid a crash.
ASTERISK-23739 #close
Reported by: Stas Kobzar
Change-Id: I756c5dd0299c77f4274368f7c99eb0464367466c
If voicemail.conf exists but is empty, the config parsing process will
default a number of global variables to non-zero values. On the other
hand, if voicemail.conf is missing (arguably semantically equivalent
to an empty file), this process is skipped and the globals are
defaulted to 0.
Set the globals to the same values they would be set to if a
configuration were present. This allows voicemail configuration to be
done completely by Realtime without the need to create an empty
voicemail.conf file.
ASTERISK-27622 #close
Reported by: Jim Van Meggelen
Change-Id: Id907d280f310f12e542ca527e6a025432b9fb409
The QueueMemberPause AMI event includes two fields that return the
reason a member was paused.
* In release branches, deprecate Reason in favor of PausedReason.
* In master, remove the Reason field entirely.
ASTERISK-28349 #close
Reported by: Niksa Baldun
Change-Id: I01da58f2b0ab927baeee754870f62b51b7b3d296
Additionally alter the warning to mention that it was "beep" which could
not be streamed to give admins a better clue about what the warning
means.
ASTERISK-28682
Change-Id: If5aed21226a173117ed17589f44826dd1ba6576e
This patch fixes some wrongly formatted documentation for the AgentLogin
application. A couple of "see also" links should contain only the function
name, and no parameters.
Change-Id: I3f788b47dce3292e311f8a9856938d59a0bd0661
Dialplan has to be careful about passing an empty device list or empty
positions in the list. As a result, dialplan has to check for these
conditions before using ChanIsAvail. Simplify dialplan by making
ChanIsAvail handle these conditions gracefully.
* Made tolerate empty positions in the device list.
* Simplified the code and eliminated some unnecessary indention.
ASTERISK-28638
Change-Id: I9e4b67e2cbf26b2417c2d03485b8568e898931d3
Dialplan has to be careful about passing an empty destination list or
empty positions in the list. As a result, dialplan has to check for
these conditions before using Dial. Simplify dialplan by making Dial
handle these conditions gracefully.
* Made tolerate empty positions in the dialed device list.
* Reduced some message log levels from notice to verbose.
ASTERISK-28638
Change-Id: I6edc731aff451f8bdfaee5498078dd18c3a11ab9
Dialplan has to be careful about passing an empty destination list or
empty positions in the list. As a result, dialplan has to check for
these conditions before using Page. Simplify dialplan by making Page
handle these conditions gracefully.
* Made tolerate empty positions in the paged device list.
* Reduced some warnings associated with the 's' option to verbose
messages. The warning level for those messages really serves no purpose
as that is why the 's' option exists.
ASTERISK-28638
Change-Id: I95b64a6d6800cd1a25279c88889314ae60fc21e3