Commit Graph

32033 Commits

Author SHA1 Message Date
agupta 85242a9bb9 stasis: Hangup channel for Local channel No such extension error
When we use early bridge with create and dial from stasis using Local channel
and the dialplan does not any entry the it is returned from core_local.c with
No such extension .

In such case asterisk locks up till the channel is not hangup with the error
Exceptionally long voice queue length

* Found that in such case app_control_dial fails on ast_call method and
  return -1
* Since it is called from stasis_app_send_command_async and return -1 does
  not cause resources to be freed and since no PBX exist it is not able to
  read from channel causing exceptionally long queue
* After putting this code found that the channel was releasing immediately
  and resources were freed.

ASTERISK-28399
Reported by: Abhay Gupta
Tested by: Abhay Gupta

Change-Id: I0a55c923fc6995559f808d63b9488762b4489318
2019-05-06 04:27:02 -06:00
Friendly Automation fca9f0a4ad Merge "app_confbridge: Add "all" variants of REMB behavior." 2019-05-03 10:54:13 -05:00
Joshua Colp 8c1680fce4 Merge "stasis: Only place stasis created and dialed channels into dial bridge." 2019-05-03 10:50:38 -05:00
Friendly Automation a6d9c4f11a Merge "stasis: Call callbacks when imparting fails" 2019-05-03 10:13:33 -05:00
Friendly Automation 249be1d7ae Merge "rtp: Add support for transport-cc in receiver direction." 2019-05-03 10:06:43 -05:00
George Joseph ef92c69fa8 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.

ASTERISK-28402
Reported-by: Ross Beer

Change-Id: I9810b3b163c45ed5a56ec743586e5ce107f13ba7
2019-05-02 12:32:40 -06:00
agupta 71040078a3 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.

ASTERISK-27756

Change-Id: Ideee69ff06c9a0b31f7ed61165f5c055f51d21b6
2019-05-02 09:44:07 -06:00
Holger Hans Peter Freyther 3087c82eb6 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.

ASTERISK-26718

Change-Id: Ib4e8f70d7a21bd54afe3cb51cc6717ef7c355496
2019-05-02 09:31:29 -06:00
Joshua Colp 80dba268ea 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.

ASTERISK-28401

Change-Id: I883e6cc26003b497c8180b346111c79a131ba88c
2019-05-02 07:29:08 -06:00
Joshua Colp 6bb70c93f1 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
received.

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.

ASTERISK-28400

Change-Id: I654a2cff5bd5554ab94457a14f70adb71f574afc
2019-05-01 05:13:14 -06:00
Friendly Automation 45a9ff8286 Merge "app_queue: Set correct value by default for shared_lastcall" 2019-04-30 16:45:48 -05:00
Friendly Automation c2326155aa Merge "mwi core: Move core MWI functionality into its own files" 2019-04-30 10:41:10 -05:00
Friendly Automation 61a8ad8db8 Merge "app_amd: Fix infinite loop on silent calls" 2019-04-30 10:07:30 -05:00
Friendly Automation 3454639055 Merge "stasis: Fix crash at shutdown." 2019-04-30 05:44:53 -05:00
agupta 7ce6d960d4 app_amd: Fix infinite loop on silent calls
The total time logic will now be executed on calls which
do not pass any media.

ASTERISK-28143

Change-Id: I24726bd29d7e467fc721ca265363417234b22855
2019-04-30 04:15:46 -06:00
Rodrigo Ramírez Norambuena ed615afb7e app_queue: Set correct value by default for shared_lastcall
There a long history here:

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

After that, the commit 4b50e3f1ee 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
2019-04-29 12:13:07 -04:00
Ben Ford dc02d0d9f2 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
2019-04-24 07:47:56 -06:00
Antoni Goldstein 8e21c25ce5 app_dial.c: RINGTIME, PROGRESSTIME and ms resolution dial timings
Added RINGTIME, RINGTIME_MS, PROGRESSTIME, PROGRESSTIME_MS variables filled
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.

ASTERISK-28363

Change-Id: If95f1a7d8c4acbac740037de0c6e3109ff6620b1
2019-04-24 06:27:41 -06:00
Kevin Harwell ff0d0ac23a 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:

main/mwi.h
main/mwi.c

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
2019-04-23 17:40:15 -05:00
Friendly Automation fbeae922ab Merge "core/buildsystem: check the actual compiler being version" 2019-04-23 15:23:55 -05:00
Friendly Automation a9d541ea0f Merge "main/stasis.c: Added detail info for stasis show app cli" 2019-04-23 13:18:07 -05:00
Guido Falsi 8b7324ed3f 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.

ASTERISK-28374

Change-Id: Icaacf6d93686ad21076878aa1504a23b4fc9d0f4
2019-04-22 07:05:33 -06:00
Lucas Mendes 4f69ea928a 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.

ASTERISK-28391
Reported by: lmendes86

Change-Id: I92b24131fd02f2e3c7fec966eea6f7a663310d40
2019-04-19 09:33:55 -06:00
Friendly Automation 3c106814d5 Merge "loader: support for permanent dlopen()" 2019-04-19 09:06:03 -05:00
Joshua Colp 9c070a4ae3 Merge "res_pjsip: Added a norefersub configuration setting" 2019-04-19 08:30:14 -05:00
George Joseph d4e25710f7 res_remb_modifier: Propertly initialize bitrate to 0.0
...and return the frame unaltered if bitrate can't be determined.

Change-Id: Ib2175ab84f85a3d7060d31625f5a2c7fbcc2ba4c
2019-04-18 08:04:11 -06:00
Friendly Automation 685223e704 Merge "res_mwi_devstate: Specify AST_MODFLAG_LOAD_ORDER to enable load priority" 2019-04-18 05:44:01 -05:00
Dan Cropp cffa2a74cb 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
to PJSIP.

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

ASTERISK-28375 #close
Reported-by: Dan Cropp

Change-Id: I0b1c28ebc905d881f4a16e752715487a688b30e9
2019-04-17 10:18:40 -05:00
sungtae kim 1d3272d4ed 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.

ASTERISK-28378

Change-Id: If25a6f14fe4f622bfb37462e891333da1fdf875f
2019-04-16 22:28:00 +02:00
Friendly Automation 0afd6128a7 Merge "pbx.c: Ignore dashes in extensions when using extenpatternmatchnew" 2019-04-16 11:38:52 -05:00
Friendly Automation 3f302e9788 Merge "app_voicemail: Don't split mailbox options on comma" 2019-04-16 11:37:09 -05:00
Sean Bright e69fcdfd83 res_mwi_devstate: Specify AST_MODFLAG_LOAD_ORDER to enable load priority
Suggested by abelbeck on the issue tracker.

ASTERISK~28384
Reported by: abelbeck

Change-Id: Icee0fff2b58dbfaa80f2b68270fe69dfb0463fc0
2019-04-16 10:05:19 -06:00
Benjamin Keith Ford 7757b7d6a6 Merge "build: Revise CHANGES and UPGRADE.txt handling." 2019-04-16 10:52:51 -05:00
Joshua Colp adc8aa8125 Merge "res_ael: Use Gosub in for loop expressions" 2019-04-16 08:11:28 -05:00
Joshua Colp ababac2393 Merge "ARI: Run 'make ari-stubs'" 2019-04-16 07:29:45 -05:00
Joshua Colp dd06912dfa Merge "res_ael: Fix pattern matching against literal '+'" 2019-04-16 07:25:40 -05:00
George Joseph 8a32b68038 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
2019-04-15 06:51:35 -06:00
Sean Bright d58d7d4500 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
2019-04-13 12:39:39 -06:00
George Joseph f5e6aa449d Merge "res_ael: Create consistent label names across reloads" 2019-04-12 14:16:31 -05:00
George Joseph 16c80b5a0d Merge "pbx.c: Properly parse labels with leading digits" 2019-04-12 14:16:10 -05:00
Sean Bright 7e5709d726 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
2019-04-12 09:23:25 -06:00
Friendly Automation 61567ee4e8 Merge "app_voicemail: Cleanup stale lock files on module load" 2019-04-12 10:00:40 -05:00
Friendly Automation 232b25fd7e Merge "chan_ooh323: fix h323 log file path" 2019-04-12 09:19:15 -05:00
Sean Bright 63f86cac09 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
2019-04-12 07:14:04 -06:00
George Joseph 26cdf042f4 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
2019-04-12 06:37:23 -06:00
Sean Bright f827193424 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
2019-04-11 14:53:53 -06:00
Sean Bright f7f1a2cbb7 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
2019-04-11 14:38:19 -06:00
Sean Bright 395c7ed5b7 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
2019-04-11 14:10:41 -06:00
Friendly Automation cb282d5c17 Merge "res_pjsip: Fix transport_states ref leak" 2019-04-11 14:58:41 -05:00
Sean Bright 2cf4e8bff9 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
2019-04-11 12:38:03 -06:00