15 months agoconversions.c: Add conversions for largest max sized integer
Kevin Harwell [Mon, 6 May 2019 21:26:46 +0000 (16:26 -0500)]
conversions.c: Add conversions for largest max sized integer

Added a conversion for umax (largest maximum sized integer allowed). Adjusted
the other current conversion functions (uint and ulong) to be derivatives of
the umax conversion since they are simply subsets of umax.

Also made the negative check move the pointer on spaces since strtoumax does it

Change-Id: I56c2ef2629d49b524c8df58af12951c181f81f08

15 months agoMerge "app_confbridge: Add "all" variants of REMB behavior."
Friendly Automation [Fri, 3 May 2019 15:54:13 +0000 (10:54 -0500)]
Merge "app_confbridge: Add "all" variants of REMB behavior."

15 months agoMerge "stasis: Only place stasis created and dialed channels into dial bridge."
Joshua Colp [Fri, 3 May 2019 15:50:38 +0000 (10:50 -0500)]
Merge "stasis: Only place stasis created and dialed channels into dial bridge."

15 months agoMerge "stasis: Call callbacks when imparting fails"
Friendly Automation [Fri, 3 May 2019 15:13:33 +0000 (10:13 -0500)]
Merge "stasis: Call callbacks when imparting fails"

15 months agoMerge "rtp: Add support for transport-cc in receiver direction."
Friendly Automation [Fri, 3 May 2019 15:06:43 +0000 (10:06 -0500)]
Merge "rtp: Add support for transport-cc in receiver direction."

15 months agores_pjsip: Check return from pjsip_parse_uri calls
George Joseph [Thu, 2 May 2019 18:29:49 +0000 (12:29 -0600)]
res_pjsip:  Check return from pjsip_parse_uri calls

Updated ast_sip_create_rdata_with_contact and registrar_find_contact
to check the return from pjsip_parse_uri before attempting to
use the uri returned.

Reported-by: Ross Beer

Change-Id: I9810b3b163c45ed5a56ec743586e5ce107f13ba7

15 months agostasis: Only place stasis created and dialed channels into dial bridge.
agupta [Tue, 30 Apr 2019 14:21:46 +0000 (19:51 +0530)]
stasis: Only place stasis created and dialed channels into dial bridge.

The dial bridge is meant to hold channels which have been created
and dialed in stasis. It handles the frames coming from them and raises
the appropriate events.

It was possible for the code to mistakenly place calls which came
from the dialplan into the dial bridge if they were not in an
answered state. These channels are not outgoing channels and
should not be placed into the dial bridge.

The code now checks to ensure that only stasis created channels are
placed into the dial bridge by checking that a PBX does not exist
on the channel.


Change-Id: Ideee69ff06c9a0b31f7ed61165f5c055f51d21b6

15 months agostasis: Call callbacks when imparting fails
Holger Hans Peter Freyther [Wed, 10 Apr 2019 04:30:25 +0000 (05:30 +0100)]
stasis: Call callbacks when imparting fails

After a bridge has been deleted the stasis control will depart
the channel and might attempt to re-add it to the dial bridge.

The later can fail and this can lead to a situation that the stasis
control is unlinked but the after_bridge_cb_failed cb is executed trying
to access a dangling control object.

Fix it by calling the after_cb's before bridge_channel_impart_signal.


Change-Id: Ib4e8f70d7a21bd54afe3cb51cc6717ef7c355496

15 months agoapp_confbridge: Add "all" variants of REMB behavior.
Joshua Colp [Tue, 30 Apr 2019 11:22:44 +0000 (11:22 +0000)]
app_confbridge: Add "all" variants of REMB behavior.

When producing a combined REMB value the normal behavior
is to have a REMB value which is unique for each sender
based on all of their receivers. This can result in one
sender having low bitrate while all the rest are high.

This change adds "all" variants which produces a bridge
level REMB value instead. All REMB reports are combined
together into a single REMB value that is the same for
each sender.


Change-Id: I883e6cc26003b497c8180b346111c79a131ba88c

15 months agortp: Add support for transport-cc in receiver direction.
Joshua Colp [Tue, 23 Apr 2019 10:00:43 +0000 (10:00 +0000)]
rtp: Add support for transport-cc in receiver direction.

The transport-cc draft is a mechanism by which additional information
about packet reception can be provided to the sender of packets so
they can do sender side bandwidth estimation. This is accomplished
by having a transport specific sequence number and an RTCP feedback
message. This change implements this in the receiver direction.

For each received RTP packet where transport-cc is negotiated we store
the time at which the RTP packet was received and its sequence number.
At a 1 second interval we go through all packets in that period of time
and use the stored time of each in comparison to its preceding packet to
calculate its delta. This delta information is placed in the RTCP
feedback message, along with indicators for any packets which were not

The browser then uses this information to better estimate available
bandwidth and adjust accordingly. This may result in it lowering the
available send bandwidth or adjusting how "bursty" it can be.


Change-Id: I654a2cff5bd5554ab94457a14f70adb71f574afc

15 months agoMerge "app_queue: Set correct value by default for shared_lastcall"
Friendly Automation [Tue, 30 Apr 2019 21:45:48 +0000 (16:45 -0500)]
Merge "app_queue: Set correct value by default for shared_lastcall"

15 months agoMerge "mwi core: Move core MWI functionality into its own files"
Friendly Automation [Tue, 30 Apr 2019 15:41:10 +0000 (10:41 -0500)]
Merge "mwi core: Move core MWI functionality into its own files"

15 months agoMerge "app_amd: Fix infinite loop on silent calls"
Friendly Automation [Tue, 30 Apr 2019 15:07:30 +0000 (10:07 -0500)]
Merge "app_amd: Fix infinite loop on silent calls"

15 months agoMerge "stasis: Fix crash at shutdown."
Friendly Automation [Tue, 30 Apr 2019 10:44:53 +0000 (05:44 -0500)]
Merge "stasis: Fix crash at shutdown."

15 months agoapp_amd: Fix infinite loop on silent calls
agupta [Tue, 4 Dec 2018 08:10:15 +0000 (13:40 +0530)]
app_amd: Fix infinite loop on silent calls

The total time logic will now be executed on calls which
do not pass any media.


Change-Id: I24726bd29d7e467fc721ca265363417234b22855

15 months agoapp_queue: Set correct value by default for shared_lastcall
Rodrigo Ramírez Norambuena [Mon, 29 Apr 2019 16:13:07 +0000 (12:13 -0400)]
app_queue: Set correct value by default for shared_lastcall

There a long history here:

In commit dd1e62c095c has introduce by default shared_lastcall = true by
default but this now only happen is there not [general] directive in

After that, the commit 4b50e3f1ee84ae29da6d9eb3cfd9896a49d2394b fix the
sample file.

We'll need to keep the same setting if there a general or not section in
configuration file since the shared_lastcall is by a long time in
sample files as default value to 'no'.

Change-Id: Id44faec370136df8d57902b453ad4059ed21b94c

15 months agostasis: Fix crash at shutdown.
Ben Ford [Tue, 23 Apr 2019 14:47:45 +0000 (09:47 -0500)]
stasis: Fix crash at shutdown.

When compiling in dev mode, stasis statistics are enabled and can cause
a crash at shutdown due to the following:
- Containers are freed
- Topics and subscriptions remain
- When those topics and subscriptions are deallocated, they go to do
  things with the container

This changes the containers to global ao2 objects, and whenever needed
in the code, a reference must be obtained and checked before any
operations can be done.

ASTERISK-28353 #close

Change-Id: Ie7d5e907fcfcb4d65bd36d5e4eb923126fde8d33

15 months agoapp_dial.c: RINGTIME, PROGRESSTIME and ms resolution dial timings
Antoni Goldstein [Fri, 29 Mar 2019 14:04:46 +0000 (14:04 +0000)]
app_dial.c: RINGTIME, PROGRESSTIME and ms resolution dial timings

at the earliest received PROGRESS or RINGING.
Added millisecond versions of DIALEDTIME and ANSWEREDTIME.

Added millisecond versions of ast_channel_get_up_time and
ast_channel_get_duration in channel.c.


Change-Id: If95f1a7d8c4acbac740037de0c6e3109ff6620b1

15 months agomwi core: Move core MWI functionality into its own files
Kevin Harwell [Tue, 9 Apr 2019 19:48:22 +0000 (14:48 -0500)]
mwi core: Move core MWI functionality into its own files

There is enough MWI functionality to warrant it having its own 'c' and header
files. This patch moves all current core MWI data structures, and functions
into the following files:


Note, code was simply moved, and not modified. However, this patch is also in
preparation for core MWI changes, and additions to come.

Change-Id: I9dde8bfae1e7ec254fa63166e090f77e4d3097e0

15 months agoMerge "core/buildsystem: check the actual compiler being version"
Friendly Automation [Tue, 23 Apr 2019 20:23:55 +0000 (15:23 -0500)]
Merge "core/buildsystem: check the actual compiler being version"

15 months agoMerge "main/stasis.c: Added detail info for stasis show app cli"
Friendly Automation [Tue, 23 Apr 2019 18:18:07 +0000 (13:18 -0500)]
Merge "main/stasis.c: Added detail info for stasis show app cli"

15 months agocore/buildsystem: check the actual compiler being version
Guido Falsi [Sun, 7 Apr 2019 16:36:55 +0000 (18:36 +0200)]
core/buildsystem: check the actual compiler being version

Make compiler check use the output of the actual compiler being
used as reported by the CC variable, instead of unconditionally
running the "gcc" binary.  Also only run the check if the compiler
is gcc or a cross-compile gcc.


Change-Id: Icaacf6d93686ad21076878aa1504a23b4fc9d0f4

15 months agores_indications: Fix indications remove command autocomplete
Lucas Mendes [Fri, 19 Apr 2019 14:33:49 +0000 (16:33 +0200)]
res_indications: Fix indications remove command autocomplete

We changed the validation of autocomplete parameter in the "indications
remove" command to avoid continue the execution of the command after
asking for autocomplete out of range parameters.

Reported by: lmendes86

Change-Id: I92b24131fd02f2e3c7fec966eea6f7a663310d40

15 months agoMerge "loader: support for permanent dlopen()"
Friendly Automation [Fri, 19 Apr 2019 14:06:03 +0000 (09:06 -0500)]
Merge "loader: support for permanent dlopen()"

15 months agoMerge "res_pjsip: Added a norefersub configuration setting"
Joshua Colp [Fri, 19 Apr 2019 13:30:14 +0000 (08:30 -0500)]
Merge "res_pjsip:  Added a norefersub configuration setting"

15 months agores_remb_modifier: Propertly initialize bitrate to 0.0
George Joseph [Wed, 17 Apr 2019 19:45:26 +0000 (13:45 -0600)]
res_remb_modifier:  Propertly initialize bitrate to 0.0

...and return the frame unaltered if bitrate can't be determined.

Change-Id: Ib2175ab84f85a3d7060d31625f5a2c7fbcc2ba4c

15 months agoMerge "res_mwi_devstate: Specify AST_MODFLAG_LOAD_ORDER to enable load priority"
Friendly Automation [Thu, 18 Apr 2019 10:44:01 +0000 (05:44 -0500)]
Merge "res_mwi_devstate: Specify AST_MODFLAG_LOAD_ORDER to enable load priority"

15 months agores_pjsip: Added a norefersub configuration setting
Dan Cropp [Mon, 8 Apr 2019 22:04:48 +0000 (17:04 -0500)]
res_pjsip:  Added a norefersub configuration setting

Added a new PJSIP global setting called norefersub.
Default is true to keep support working as before.

res_pjsip_refer:  Configures PJSIP norefersub capability accordingly.

Checks the PJSIP global setting value.
If it is true (default) it adds the norefersub capability to PJSIP.
If it is false (disabled) it does not add the norefersub capability

This is useful for Cisco switches that do not follow RFC4488.

ASTERISK-28375 #close
Reported-by: Dan Cropp

Change-Id: I0b1c28ebc905d881f4a16e752715487a688b30e9

15 months agomain/stasis.c: Added detail info for stasis show app cli
sungtae kim [Wed, 10 Apr 2019 00:09:10 +0000 (02:09 +0200)]
main/stasis.c: Added detail info for stasis show app cli

Currently, the "stasis show app" cli doesn't give detail
of subscription/subscriber information.
Added more printings to show details.


Change-Id: If25a6f14fe4f622bfb37462e891333da1fdf875f

16 months agoMerge "pbx.c: Ignore dashes in extensions when using extenpatternmatchnew"
Friendly Automation [Tue, 16 Apr 2019 16:38:52 +0000 (11:38 -0500)]
Merge "pbx.c: Ignore dashes in extensions when using extenpatternmatchnew"

16 months agoMerge "app_voicemail: Don't split mailbox options on comma"
Friendly Automation [Tue, 16 Apr 2019 16:37:09 +0000 (11:37 -0500)]
Merge "app_voicemail: Don't split mailbox options on comma"

16 months agores_mwi_devstate: Specify AST_MODFLAG_LOAD_ORDER to enable load priority
Sean Bright [Tue, 16 Apr 2019 15:58:40 +0000 (11:58 -0400)]
res_mwi_devstate: Specify AST_MODFLAG_LOAD_ORDER to enable load priority

Suggested by abelbeck on the issue tracker.

Reported by: abelbeck

Change-Id: Icee0fff2b58dbfaa80f2b68270fe69dfb0463fc0

16 months agoMerge "build: Revise CHANGES and UPGRADE.txt handling."
Benjamin Keith Ford [Tue, 16 Apr 2019 15:52:51 +0000 (10:52 -0500)]
Merge "build: Revise CHANGES and UPGRADE.txt handling."

16 months agoMerge "res_ael: Use Gosub in for loop expressions"
Joshua Colp [Tue, 16 Apr 2019 13:11:28 +0000 (08:11 -0500)]
Merge "res_ael: Use Gosub in for loop expressions"

16 months agoMerge "ARI: Run 'make ari-stubs'"
Joshua Colp [Tue, 16 Apr 2019 12:29:45 +0000 (07:29 -0500)]
Merge "ARI:  Run 'make ari-stubs'"

16 months agoMerge "res_ael: Fix pattern matching against literal '+'"
Joshua Colp [Tue, 16 Apr 2019 12:25:40 +0000 (07:25 -0500)]
Merge "res_ael: Fix pattern matching against literal '+'"

16 months agoCI: Move test group config files to Jenkins
George Joseph [Fri, 12 Apr 2019 16:32:44 +0000 (10:32 -0600)]
CI: Move test group config files to Jenkins

One of the downaides of having things like test configuration
in the git repo is that it can't be changed at runtime.  You have
to create a review for the changes and merge it mefore it will
take effect.

This review moves the data currently held in
tests/CI/periodic-dailyTestGroups.json and
tests/CI/gateTestGroups.json into a Jenkins Config File attached
to the job definitions.  This allows us to alter it from the
Jenkins UI at runtime.  The original files stay in the repo
as documentation.

Change-Id: I14b9702f6285ce1fb2420287ba0e7d3b59109763

16 months agoapp_voicemail: Don't split mailbox options on comma
Sean Bright [Sat, 13 Apr 2019 18:36:56 +0000 (14:36 -0400)]
app_voicemail: Don't split mailbox options on comma

Because the per-mailbox options are the last thing on a line, don't look
for or stomp on any subsequent commas.

ASTERISK-27935 #close
Reported by: Sébastien Duthil

Change-Id: I07b2eb4a33c303d0c7114d5b906f8c067c60a153

16 months agoMerge "res_ael: Create consistent label names across reloads"
George Joseph [Fri, 12 Apr 2019 19:16:31 +0000 (14:16 -0500)]
Merge "res_ael: Create consistent label names across reloads"

16 months agoMerge "pbx.c: Properly parse labels with leading digits"
George Joseph [Fri, 12 Apr 2019 19:16:10 +0000 (14:16 -0500)]
Merge "pbx.c: Properly parse labels with leading digits"

16 months agopbx.c: Ignore dashes in extensions when using extenpatternmatchnew
Sean Bright [Fri, 12 Apr 2019 14:33:57 +0000 (10:33 -0400)]
pbx.c: Ignore dashes in extensions when using extenpatternmatchnew

Because hyphens are not matched literally in Asterisk dialplan, we need
to ignore them in our candidate extensions as well.

ASTERISK-17695 #close
Reported by: test011

Change-Id: I227f02301577b1633e8a55b9fe9dc149935c03f0

16 months agoMerge "app_voicemail: Cleanup stale lock files on module load"
Friendly Automation [Fri, 12 Apr 2019 15:00:40 +0000 (10:00 -0500)]
Merge "app_voicemail: Cleanup stale lock files on module load"

16 months agoMerge "chan_ooh323: fix h323 log file path"
Friendly Automation [Fri, 12 Apr 2019 14:19:15 +0000 (09:19 -0500)]
Merge "chan_ooh323: fix h323 log file path"

16 months agoapp_voicemail: Cleanup stale lock files on module load
Sean Bright [Tue, 9 Apr 2019 15:10:12 +0000 (11:10 -0400)]
app_voicemail: Cleanup stale lock files on module load

If Asterisk crashes while a VM directory is locked, lock files in the VM
spool directory will not get properly cleaned up. We now clear them on
module load.

ASTERISK-20207 #close
Reported by: Steven Wheeler

Change-Id: If40ccd508e2f6e5ade94dde2f0bcef99056d0aaf

16 months agoARI: Run 'make ari-stubs'
George Joseph [Fri, 12 Apr 2019 12:33:10 +0000 (06:33 -0600)]
ARI:  Run 'make ari-stubs'

An earlier contributor apparently forgot to run 'make ari-stubs'
before committing after making ARI model changes.

Change-Id: I7813e5638e2821d11f4b968dc2aeab4f725190a6

16 months agores_ael: Create consistent label names across reloads
Sean Bright [Thu, 11 Apr 2019 20:48:49 +0000 (16:48 -0400)]
res_ael: Create consistent label names across reloads

Reset the internal counter that the AEL2 compiler uses for unique label
names before compiling. This keeps dialplan labels consistent across
reloads assuming the AEL2 has not changed.

ASTERISK-17799 #close
Reported by: Kirill Katsnelson

Change-Id: I30b3cc887d1ee0644d3f341e2fef16f525d7fae5

16 months agores_ael: Use Gosub in for loop expressions
Sean Bright [Thu, 11 Apr 2019 20:29:20 +0000 (16:29 -0400)]
res_ael: Use Gosub in for loop expressions

In AEL2, if a 'for' statement contains macro* calls, like:

    for (&iterator(${TRY},A); "${A}" != ""; &iterate(A)) {

The AEL2 parser will translate these into calls to the deprecated Macro
dialplan application and use the antiquated pipe delimiter.

Instead, convert these into calls to the Gosub dialplan application and
use commas as argument separators.

ASTERISK-18593 #close
Reported by: Luke-Jr

* 'macro' in this context means AEL2 macros, not the 'Macro' application

Change-Id: I3d73716033b8e3e42e0209d355bf5f10c97045fc

16 months agores_ael: Fix pattern matching against literal '+'
Sean Bright [Thu, 11 Apr 2019 16:03:07 +0000 (12:03 -0400)]
res_ael: Fix pattern matching against literal '+'

When generating the regular expression that matches against existing
extensions, we need to escape literal characters that can also be
regular expression metacharacters. This was already being done for '*'
but we need to do the same for '+'.

In passing, remove some unreachable code - strcmp() is already run
immediately when entering extension_matches().

ASTERISK-14939 #close
Reported by: klaus3000

Change-Id: I8d2cccb3479168fba1b0a6704c52198b396468f1

16 months agoMerge "res_pjsip: Fix transport_states ref leak"
Friendly Automation [Thu, 11 Apr 2019 19:58:41 +0000 (14:58 -0500)]
Merge "res_pjsip: Fix transport_states ref leak"

16 months agopbx.c: Properly parse labels with leading digits
Sean Bright [Thu, 11 Apr 2019 17:49:38 +0000 (13:49 -0400)]
pbx.c: Properly parse labels with leading digits

If the target of a Goto is a label that starts with a number, we
erroneously treat the leading digits as a priority.

ASTERISK-20182 #close
Reported by: Janu

Change-Id: Ia78408c0805a729103917247ecfc802f6fafc94b

16 months agochan_ooh323: fix h323 log file path
Alexander Anikin [Wed, 10 Apr 2019 23:07:18 +0000 (02:07 +0300)]
chan_ooh323: fix h323 log file path

Change h323 log path relative to AST_LOG_DIR instead of
/var/log/asterisk hardcoded
Add return back error message from OOH323EP initialize

ASTERISK-28348 #close

Reported by: Dmitry Shubin

Change-Id: Ib102dd36bbe6c2a7a4ce6870ae9110d9000d7e98

16 months agoMerge "chan_pjsip: DTMF Mode auto_info fallback lead to both inband and info"
George Joseph [Wed, 10 Apr 2019 17:42:56 +0000 (12:42 -0500)]
Merge "chan_pjsip: DTMF Mode auto_info fallback lead to both inband and info"

16 months agores_pjsip: Fix transport_states ref leak
Alexei Gradinari [Tue, 9 Apr 2019 21:47:59 +0000 (17:47 -0400)]
res_pjsip: Fix transport_states ref leak

Add missing ao2_ref(transport_state, -1) while iterate on a transport_states

Change-Id: I40e35b5a339121300c80075c30db47201a6c374e

16 months agoMerge "config.c: Fix a crash in extconfig parsing"
Joshua Colp [Wed, 10 Apr 2019 11:40:54 +0000 (06:40 -0500)]
Merge "config.c: Fix a crash in extconfig parsing"

16 months agobuild: Revise CHANGES and UPGRADE.txt handling.
Ben Ford [Mon, 1 Apr 2019 20:38:04 +0000 (15:38 -0500)]
build: Revise CHANGES and UPGRADE.txt handling.

This changes the way that we handle adding changes to CHANGES and
UPGRADE.txt. The reason for this is because whenever someone needed to
make a change to one of these files and someone else had already done
so, you would run into merge conflicts. With this new setup, there will
never be merge conflicts since all changes will be documented in the
doc/<file>-staging directory. The release script is now responsible for
merging all of these changes into the appropriate files.

There is a special format that these files have to follow in order to be
parsed. The files do not need to have a meaningful name, but it is
strongly recommended. For example, if you made a change to pjsip, you
may have something like this "res_pjsip_relative_title", where
"relative_title" is something more descriptive than that. Inside each
file, you will need a subject line for your change, followed by a
description. There can be multiple subject lines. The file may look
something like this:

   Subject: res_pjsip
   Subject: Core

   A description that explains the changes made and why. The release
   script will handle the bulleting and section separators!

   You can still separate with new lines within your

The headers ("Subject" and "Master-Only") are case sensative, but the
value for "Master-Only" ("true" or "True") is not.

For more information, check out the wiki page:

ASTERISK-28111 #close

Change-Id: I19cf4b569321c88155a65e9b0b80f6d58075dd47

16 months agoMerge "CI: Add --no-dev-mode option to"
Friendly Automation [Mon, 8 Apr 2019 15:59:54 +0000 (10:59 -0500)]
Merge "CI:  Add --no-dev-mode option to"

16 months agoMerge "stasis.c: Added topic_all container"
George Joseph [Mon, 8 Apr 2019 15:53:18 +0000 (10:53 -0500)]
Merge "stasis.c: Added topic_all container"

16 months agoMerge "res/res_ari: Added ARI resource /ari/channels/{channelId}/rtp_statistics"
George Joseph [Mon, 8 Apr 2019 15:51:45 +0000 (10:51 -0500)]
Merge "res/res_ari: Added ARI resource /ari/channels/{channelId}/rtp_statistics"

16 months agoMerge "main/json.c: Added app_name, app_data to channel type"
Friendly Automation [Mon, 8 Apr 2019 15:32:16 +0000 (10:32 -0500)]
Merge "main/json.c: Added app_name, app_data to channel type"

16 months agoconfig.c: Fix a crash in extconfig parsing
Chris-Savinovich [Thu, 4 Apr 2019 21:02:42 +0000 (16:02 -0500)]
config.c: Fix a crash in extconfig parsing

When extconfig.conf file is parsed, the code previously searched for
character comma without verifying if error (null or blank).  This caused
a segmentation error.

Change-Id: Id76b452d8f330d11c2742c37232761ad71472a8b

16 months agochan_pjsip: DTMF Mode auto_info fallback lead to both inband and info
Salah Ahmed [Wed, 3 Apr 2019 15:55:07 +0000 (10:55 -0500)]
chan_pjsip: DTMF Mode auto_info fallback lead to both inband and info

When the dtmf_mode on an endpoint is configured as "auto_info"
Asterisk will produce an inband DTMF tone alongside an INFO
message when sending DTMF.


Change-Id: I1380b82f006e110a1b83fbb50c9873edd13a5d9a

16 months agoloader: support for permanent dlopen()
Sebastian Kemper [Tue, 2 Apr 2019 20:49:52 +0000 (22:49 +0200)]
loader: support for permanent dlopen()

Asterisk assumes that dlopen() will always run the constructor of a
shared library and every dlclose() will run its destructor. But dlopen()
may be permanent, meaning the constructor will only be run once, as is
the case with musl libc.

With a permanent dlopen() the Asterisk module loader does not work
correctly, because it's expectations regarding when the constructors and
destructors are run are not met. In fact a segmentation fault will occur
when the first module is "re-opened" that has AST_MODFLAG_GLOBAL_SYMBOLS
set (the dlopen() does not call the constructor, resource_being_loaded
is not set to NULL, then strlen is called with NULL instead of a string,
see issue ASTERISK-28319).

This commit adds code to the loader that will manually run the
constructors/destructors of the (non-builtin) modules where needed. To
achieve this a new ao2 container (linked list) is started and filled
with objects that contain the names of the modules and the pointers to
their respective info structs.

This behavior can be activated when configuring Asterisk
(--enable-permanent-dlopen). By default this is disabled, of course.

ASTERISK-28319 #close

Signed-off-by: Sebastian Kemper <>
Change-Id: I86693a0ecf25d5ba81c73773a03df4abc3426875

16 months agoMerge "bridge_softmix: use a float type to store the internal REMB bitrate"
Joshua Colp [Thu, 4 Apr 2019 13:52:47 +0000 (08:52 -0500)]
Merge "bridge_softmix: use a float type to store the internal REMB bitrate"

16 months agoMerge "res/res_rtp_asterisk: Enable rxjitter calculation for video"
Joshua Colp [Thu, 4 Apr 2019 13:32:07 +0000 (08:32 -0500)]
Merge "res/res_rtp_asterisk: Enable rxjitter calculation for video"

16 months agoCI: Add --no-dev-mode option to
George Joseph [Wed, 3 Apr 2019 22:55:00 +0000 (16:55 -0600)]
CI:  Add --no-dev-mode option to

The new option disables dev mode, TEST_FRAMEWORK and
MALLOC_DEBUG making the build more production-like.

Change-Id: Ieb72497d4d91d5416684aaed702cc3f532099738

16 months agobuild: Fix compiler warnings/errors.
Ben Ford [Wed, 3 Apr 2019 15:24:06 +0000 (10:24 -0500)]
build: Fix compiler warnings/errors.

The compiler complained about a couple of variables that weren't
initialized but were being used. Initializing them to NULL resolves the

ASTERISK-28362 #close

Change-Id: I6243afc5459b416edff6bbf571b0489f6b852e4b

16 months agobridge_softmix: use a float type to store the internal REMB bitrate
Kevin Harwell [Wed, 27 Mar 2019 17:59:30 +0000 (12:59 -0500)]
bridge_softmix: use a float type to store the internal REMB bitrate

REMB's exponent is 6-bits (0..63) and has a mantissa of 18-bits. We were using
an unsigned integer to represent the bitrate. However, that type is not large
enough to hold all potential bitrate values. If the bitrate is large enough
bits were being shifted off the "front" of the mantissa, which caused the
wrong value to be sent to the browser.

This patch makes it so it now uses a float type to hold the bitrate. Using a
float allows for all bitrate values to be correctly represented.


Change-Id: Ice00fdd16693b16b41230664be5d9f0e465b239e

16 months agoMerge "pjproject: Add timer patch from pjproject r5934"
Friendly Automation [Tue, 2 Apr 2019 15:15:21 +0000 (10:15 -0500)]
Merge "pjproject: Add timer patch from pjproject r5934"

16 months agoapp_queue: Fix a few member pause bugs
Sean Bright [Fri, 29 Mar 2019 13:07:29 +0000 (09:07 -0400)]
app_queue: Fix a few member pause bugs

* Always set member->lastpause when setting member->paused

* Fixed typo (using member->lastcall instead of member->lastpause) in
  'queue show' output.

* Use a constant 'now' in 'queue show' output for a better point-in-time
  view of time based stats.

ASTERISK-27541 #close
Reported by: César Benjamín García Martínez

Change-Id: Ib41ced90cfdb66f9bb1e7b263d0f6fc1ac6e18fa

16 months agoalembic: Fix errors during upgrade head.
Ben Ford [Tue, 26 Mar 2019 19:56:37 +0000 (14:56 -0500)]
alembic: Fix errors during upgrade head.

When trying to upgrade using alembic, a couple different errors kept
popping up that prevented the upgrade. An additional parameter was
needed when changing the schema for mwi_subscribe_replaces_unsolicited
from an integer to an enum. When changing from a string to an enum, the
type needed to be cast for postgresql. The other issue was a parameter
being used during column creation that did not exist.

After fixing the upgrade process, it revealed errors with the downgrade
process. One was a variable not being defined in the downgrade function,
and the other was tables not existing when using MySQL. This was due to
a context check that should have encompassed MySQL, but in the end was
not doing so.

Change-Id: Ib4d70cf3ce5080023a50be496272a777b55d6c8e

16 months agoMerge "pjsip: restrict function PJSIP_PARSE_URI to parse only SIP/SIPS URIs"
George Joseph [Thu, 28 Mar 2019 13:04:51 +0000 (08:04 -0500)]
Merge "pjsip: restrict function PJSIP_PARSE_URI to parse only SIP/SIPS URIs"

16 months agoMerge "manager: Use separate lock for session event notification."
George Joseph [Thu, 28 Mar 2019 13:03:37 +0000 (08:03 -0500)]
Merge "manager: Use separate lock for session event notification."

16 months agostasis.c: Added topic_all container
sungtae kim [Sat, 26 Jan 2019 21:51:48 +0000 (22:51 +0100)]
stasis.c: Added topic_all container

Added topic_all container for centralizing the topic. This makes more
easier to managing the topics.

Added cli commands.
stasis show topics : It shows all registered topics.
stasis show topic <name> : It shows speicifed topic's detail info.


Change-Id: Ie86d125d2966f93de74ee00f47ae6fbc8c081c5f

16 months agores/res_rtp_asterisk: Enable rxjitter calculation for video
Matthew Fredrickson [Wed, 27 Mar 2019 19:30:45 +0000 (19:30 +0000)]
res/res_rtp_asterisk: Enable rxjitter calculation for video

It looks like we're not properly calculating jitter values on received
video streams.  This patch enables the code that does jitter calculations
for those streams.

Change-Id: Iaac985808829c8f034db8c57318789c4c8c11392

16 months agoMerge "build: Add staging directories for future changes."
George Joseph [Wed, 27 Mar 2019 19:25:25 +0000 (14:25 -0500)]
Merge "build: Add staging directories for future changes."

16 months agoMerge "app_queue: Fix documentation for QUEUE_MEMBER function."
Friendly Automation [Wed, 27 Mar 2019 18:40:36 +0000 (13:40 -0500)]
Merge "app_queue: Fix documentation for QUEUE_MEMBER function."

16 months agobuild: Add staging directories for future changes.
Ben Ford [Wed, 27 Mar 2019 16:03:40 +0000 (11:03 -0500)]
build: Add staging directories for future changes.

This is the first step in changing the release process so that changes
made to the CHANGES and UPGRADE.txt files do not result in merge
conflicts every time multiple people modify these files. The changes
made will go in these new directories: doc/CHANGES-staging and
doc/UPGRADE-staging. The files explain how things will work,
but here's a little overview. When you make a change that would go in
either CHANGES or UPGRADE.txt, this should instead be documented in a
new file in the doc/CHANGES-staging or doc/UPGRADE-staging directory,
respectively. The format will look like this:

   Subject: res_pjsip

   A description that explains the changes made and why. The release
   script will handle the bulleting and section separators! The
   'Subject:' header is case-sensitive.

   You can still separate with new lines within your description.

   Subject: res_ari
   Master-Only: true

   You can have more than one subject, and they don't have to be the
   same! Also, the 'Master-Only' header should always be true and is
   also case-sensitive (but the value is not - you can have 'true' or
   'True'). This header will only ever be present in the master branch.

For more information, check out the wiki page:

This is an initial change for ASTERISK_28111. Functionally, this will
make no difference, but it will prep the directories for when the
changes from CHANGES and UPGRADE.txt are extracted.

Change-Id: I8d852f284f66ac456b26dcb899ee46babf7d15b6

16 months agopjsip: restrict function PJSIP_PARSE_URI to parse only SIP/SIPS URIs
Alexei Gradinari [Mon, 25 Mar 2019 23:05:28 +0000 (19:05 -0400)]
pjsip: restrict function PJSIP_PARSE_URI to parse only SIP/SIPS URIs

The next usage of PJSIP_PARSE_URI will crash asterisk

The function pjsip_parse_uri successfully parses then, but returns
struct pjsip_other_uri *.

This patch restricts parsing only SIP/SIPS URIs.

Change-Id: I16f255c2b86a80a67e9f9604b94b129a381dd25e

16 months agopjproject: Add timer patch from pjproject r5934
Sean Bright [Tue, 26 Mar 2019 18:07:25 +0000 (14:07 -0400)]
pjproject: Add timer patch from pjproject r5934

ASTERISK-28161 #close
Reported by: Ross Beer

Change-Id: I65331d554695753005eaa66c1d5d4807fe9009c8

16 months agoMerge "chan_sip: Ensure 'qualifygap' isn't negative"
Friendly Automation [Wed, 27 Mar 2019 11:00:11 +0000 (06:00 -0500)]
Merge "chan_sip: Ensure 'qualifygap' isn't negative"

16 months agoapp_queue: Fix documentation for QUEUE_MEMBER function.
Sean Bright [Tue, 26 Mar 2019 21:55:55 +0000 (17:55 -0400)]
app_queue: Fix documentation for QUEUE_MEMBER function.

It was a copy/paste of the QUEUE_MEMBER_COUNT function's synopsis.

ASTERISK-20986 #close
Reported by: Olivier Krief

Change-Id: If51ec481feb35824a4e78ab5600b197b819b10be

16 months agomain/json.c: Added app_name, app_data to channel type
sungtae kim [Thu, 21 Mar 2019 23:09:14 +0000 (00:09 +0100)]
main/json.c: Added app_name, app_data to channel type

It was difficult to check the channel's current application and
parameters using ARI for current channels. Added app_name, app_data
items to show the current application information.


Change-Id: Ia48972b3850e5099deab0faeaaf51223a1f2f38c

16 months agoMerge "res_config_odbc: set empty extended field as a single whitespace"
George Joseph [Tue, 26 Mar 2019 13:47:48 +0000 (08:47 -0500)]
Merge "res_config_odbc: set empty extended field as a single whitespace"

16 months agomanager: Use separate lock for session event notification.
Joshua Colp [Mon, 25 Mar 2019 11:34:09 +0000 (08:34 -0300)]
manager: Use separate lock for session event notification.

When notifying a manager session that new events were available
the same lock was used that was also held when doing things within
the session (such as sending events out). If the manager session
blocked for a period of time this would cause a back up of messages
in Stasis and would also block any other sessions from receiving

This change adds a separate lock to the manager session which is
strictly used for notifying it that new events are available.


Change-Id: Ifbcac007faca9ad0231640f5e82a6ca9228f261b

16 months agoMerge "res/res_ari: Added timestamp as a requirement for all ARI events"
Friendly Automation [Tue, 26 Mar 2019 13:32:28 +0000 (08:32 -0500)]
Merge "res/res_ari: Added timestamp as a requirement for all ARI events"

16 months agochan_sip: Ensure 'qualifygap' isn't negative
Sean Bright [Mon, 25 Mar 2019 19:31:23 +0000 (15:31 -0400)]
chan_sip: Ensure 'qualifygap' isn't negative

Passing negative intervals to the scheduler rips a hole in the
space-time continuum.

ASTERISK-25792 #close
Reported by: Paul Sandys

Change-Id: Ie706f21cee05f76ffb6f7d89e9c867930ee7bcd7

16 months agores_config_odbc: set empty extended field as a single whitespace
Alexei Gradinari [Mon, 25 Mar 2019 16:42:27 +0000 (12:42 -0400)]
res_config_odbc: set empty extended field as a single whitespace

If Realtime @ variable value is NULL or empty or contains only whitespaces
then when we try to retrieve it using PJSIP_ENDPOINT we get WARNING
pjsip_endpoint_function_read: Unknown property @my_var for PJSIP endpoint.
And the variable is missing in the result of CLI pjsip show endpoint.

This patch keeps empty sorcery extended field.

ASTERISK-28341 #close

Change-Id: I221fccc04cbfa2be17ce971f64ae0e74e465eea0

16 months agomain/taskprocessor: Increase max name length of taskprocessors
Matthew Fredrickson [Fri, 22 Mar 2019 19:46:34 +0000 (19:46 +0000)]
main/taskprocessor: Increase max name length of taskprocessors

Since the new names went in, the maximum taskprocessor name is too
short.  This patch increases the name field to a length to better
handle the new names.

Change-Id: I32f32d6926f25c8ef5a91303fd2988d2c2858877

16 months agoMerge "sorcery.c: Sorcery enhancements for wizard management"
George Joseph [Tue, 19 Mar 2019 15:23:37 +0000 (10:23 -0500)]
Merge "sorcery.c: Sorcery enhancements for wizard management"

16 months agoMerge "res/res_stasis: Fixed wrong StasisEnd timestamp"
George Joseph [Tue, 19 Mar 2019 14:26:47 +0000 (09:26 -0500)]
Merge "res/res_stasis: Fixed wrong StasisEnd timestamp"

16 months agosorcery.c: Sorcery enhancements for wizard management
George Joseph [Thu, 14 Mar 2019 16:46:53 +0000 (10:46 -0600)]
sorcery.c: Sorcery enhancements for wizard management

Added ability to specifiy a wizard is read-only when applying
it to a specific object type.  This allows you to specify
create, update and delete callbacks for the wizard but limit
which object types can use them.

Added the ability to allow an object type to have multiple
wizards of the same type.  This is indicated when a wizard
is added to a specific object type.

Added 3 new sorcery wizard functions:

* ast_sorcery_object_type_insert_wizard which does the same thing
  as the existing ast_sorcery_insert_wizard_mapping function but
  accepts the new read-only and allot-duplicates flags and also
  returns the ast_sorcery_wizard structure used and it's internal
  data structure. This allows immediate use of the wizard's
  callbacks without having to register a "wizard mapped" observer.

* ast_sorcery_object_type_apply_wizard which does the same
  thing as the existing ast_sorcery_apply_wizard_mapping function
  but has the added capabilities of

* ast_sorcery_object_type_remove_wizard which removes a wizard
  matching both its name and its original argument string.

* The original logic in __ast_sorcery_insert_wizard_mapping was moved
  to __ast_sorcery_object_type_insert_wizard and enhanced for the
  new capabilities, then __ast_sorcery_insert_wizard_mapping was
  refactored to just call __ast_sorcery_insert_wizard_mapping.

* Added a unit test to test_sorcery.c to test the read-only

Change-Id: I40f35840252e4313d99e11dbd80e270a3aa10605

16 months agoMerge "vector: Add AST_VECTOR_COMPACT() to reclaim wasted space"
Joshua Colp [Mon, 18 Mar 2019 11:31:46 +0000 (06:31 -0500)]
Merge "vector: Add AST_VECTOR_COMPACT() to reclaim wasted space"

16 months agoMerge "Revert "Test_cel: Fails when DONT_OPTIMIZE is off""
Joshua Colp [Mon, 18 Mar 2019 11:05:31 +0000 (06:05 -0500)]
Merge "Revert "Test_cel: Fails when DONT_OPTIMIZE is off""

16 months agoMerge "Variable ALTCONF ignored when service is used in Debian"
Joshua Colp [Mon, 18 Mar 2019 11:00:06 +0000 (06:00 -0500)]
Merge "Variable ALTCONF ignored when service is used in Debian"

17 months agoMerge "app.c: Remove deletion of pool topic on mwi state delete"
George Joseph [Fri, 15 Mar 2019 23:30:08 +0000 (18:30 -0500)]
Merge "app.c:  Remove deletion of pool topic on mwi state delete"

17 months agores/res_stasis: Fixed wrong StasisEnd timestamp
sungtae kim [Sun, 10 Mar 2019 22:53:36 +0000 (23:53 +0100)]
res/res_stasis: Fixed wrong StasisEnd timestamp

Because StasisEnd's timestamp created it's own timestamp, it makes
wrong timestamp, compare to other channel event(ChannelDestroyed).
Fixed to getting a timestamp from the Channel's timestamp.


Change-Id: I5eb8380fc472f1100535a6bc4983c64767026116

17 months agovector: Add AST_VECTOR_COMPACT() to reclaim wasted space
Sean Bright [Thu, 14 Mar 2019 14:55:30 +0000 (10:55 -0400)]
vector: Add AST_VECTOR_COMPACT() to reclaim wasted space

This might be useful in situations where you are loading an undetermined number
of items into a vector and don't want to keep (potentially) 2x the necessary
memory around indefinitely.

Change-Id: I9711daa0fe01783fc6f04c5710eba84f2676d7b9

17 months agotaskprocessor.c: Fix printf type mismatch
Richard Mudgett [Thu, 14 Mar 2019 16:53:13 +0000 (11:53 -0500)]
taskprocessor.c: Fix printf type mismatch

A size_t is not always an unsigned long.

* Use the %zu format specifier in the ast_cli() printf format string since
AST_VECTOR_SIZE() returns a size_t value.

Change-Id: Ib102dd36bbe6c2a7a4ce6870ae9110d978dd7e98

17 months agoapp.c: Remove deletion of pool topic on mwi state delete
George Joseph [Fri, 8 Mar 2019 15:40:38 +0000 (08:40 -0700)]
app.c:  Remove deletion of pool topic on mwi state delete

As part of an earlier voicemail refactor, ast_delete_mwi_state_full
was modified to remove the pool topic for a mailbox when the state
was deleted.  This was an attempt to prevent stale topics from
accumulating when app_voicemail was reloaded and a mailbox went
away.  Unfortunately because of the fact that when app_voicemail
reloads, ALL mailboxes are deleted then only current ones recreated,
topics were being removed from the pool that still had subscribers
on them, then recreated as new topics of the same name.  So now
modules like res_pjsip_mwi are listening on a topic that will
never receive any messages because app_voicemail is publishing on
a different topic that happens to have the same name.  The solutiuon
to this is not easy and given that accumulating topics for
deleted mailboxes is less evil that not sending NOTIFYs...

* Removed the call to stasis_topic_pool_delete_topic in


* Fixed a topic reference leak in res_pjsip_mwi

* Added some debugging to mwi_stasis_subscription_alloc,
  stasis_topic_create, and topic_dtor.

* Fixed a topic reference leak in an error path in

Reported-by: Jared Hull

Change-Id: Id7da0990b3ac4be4b58491536b35f41291247b27

17 months agoMerge "stasis: Improve topic/subscription names and statistics."
Joshua C. Colp [Thu, 14 Mar 2019 14:22:14 +0000 (09:22 -0500)]
Merge "stasis: Improve topic/subscription names and statistics."