asterisk/asterisk.git
4 days agoMerge "sorcery.c: Sorcery enhancements for wizard management" master
George Joseph [Tue, 19 Mar 2019 15:23:37 +0000 (10:23 -0500)]
Merge "sorcery.c: Sorcery enhancements for wizard management"

4 days 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"

5 days 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_insert_wizard.

* 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
  capability.

Change-Id: I40f35840252e4313d99e11dbd80e270a3aa10605

6 days 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"

6 days 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""

6 days 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"

8 days 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"

8 days 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.

ASTERISK-28333

Change-Id: I5eb8380fc472f1100535a6bc4983c64767026116

8 days 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

9 days 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

9 days 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
  ast_delete_mwi_state_full.

Also:

* Fixed a topic reference leak in res_pjsip_mwi
  mwi_stasis_subscription_alloc.

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

* Fixed a topic reference leak in an error path in
  internal_stasis_subscribe.

ASTERISK-28306
Reported-by: Jared Hull

Change-Id: Id7da0990b3ac4be4b58491536b35f41291247b27

9 days 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."

9 days agoMerge "res_musiconhold: Remove redundant option parsing"
Joshua C. Colp [Thu, 14 Mar 2019 14:19:55 +0000 (09:19 -0500)]
Merge "res_musiconhold: Remove redundant option parsing"

10 days agoMerge "stasis: Allow empty application arguments to move."
Joshua C. Colp [Wed, 13 Mar 2019 16:46:13 +0000 (11:46 -0500)]
Merge "stasis: Allow empty application arguments to move."

10 days agoVariable ALTCONF ignored when service is used in Debian
cirillor [Sat, 9 Mar 2019 14:39:26 +0000 (11:39 -0300)]
Variable ALTCONF ignored when service is used in Debian

When variable ALTCONF is defined, the command start prints the message
"Unable to open specified master config file '"/etc/asterisk/asteris..."
and use default configurations.

ASTERISK-28332

Change-Id: I7595e582a0ee2c1051ea35435e247e27906957ef

10 days agoMerge "app_queue: fix ring_entry to access nativeformats with a channel lock"
Kevin Harwell [Wed, 13 Mar 2019 16:17:48 +0000 (11:17 -0500)]
Merge "app_queue: fix ring_entry to access nativeformats with a channel lock"

10 days agoMerge "chan_dahdi: Add logical group at DAHDIChannel event and CHANNEL function"
Kevin Harwell [Wed, 13 Mar 2019 15:55:20 +0000 (10:55 -0500)]
Merge "chan_dahdi: Add logical group at DAHDIChannel event and CHANNEL function"

10 days agostasis: Allow empty application arguments to move.
Joshua Colp [Wed, 13 Mar 2019 11:05:57 +0000 (08:05 -0300)]
stasis: Allow empty application arguments to move.

Change-Id: I1e4d37415f3034abe36496dc30209c2303e6af5c

10 days agoRevert "Test_cel: Fails when DONT_OPTIMIZE is off"
Corey Farrell [Wed, 13 Mar 2019 01:39:12 +0000 (21:39 -0400)]
Revert "Test_cel: Fails when DONT_OPTIMIZE is off"

This reverts commit 1c8378bbc9639739c079df37897ff02f94af0f07.

Change-Id: I1b9227b263c3dc4246a50aebf52a7640a0f7ea07

11 days agoMerge "partial-inlining: disable partial-inlining if gcc>=8.2.1"
Joshua C. Colp [Wed, 13 Mar 2019 12:24:47 +0000 (07:24 -0500)]
Merge "partial-inlining: disable partial-inlining if gcc>=8.2.1"

11 days agoapp_queue: fix ring_entry to access nativeformats with a channel lock
Dömsödi Gergely [Wed, 6 Mar 2019 13:20:09 +0000 (14:20 +0100)]
app_queue: fix ring_entry to access nativeformats with a channel lock

Fixes an intermittent segmentation fault which occured when accessing
nativeformats of a channel which entered into a queue.

ASTERISK-27964
Reported by: Francisco Seratti

Change-Id: Ic87fa7a363f3b487c24ce07032f4b2201c22db9e

11 days agoMakefile.moddir_rules: Pass PJPROJECT_BUNDLED to download_externals
George Joseph [Tue, 12 Mar 2019 18:25:33 +0000 (12:25 -0600)]
Makefile.moddir_rules: Pass PJPROJECT_BUNDLED to download_externals

The download_externals script wasn't getting the PJPROJECT_BUNDLED
environment variable passed down to it so it wasn't downloading
the appropriate variant of res_digium_phone.  This could cause
crashes in the DPMA.

Change-Id: I5daa9369c7af1fd556d892e89a85f279a2533425

11 days agoMerge "chan_pjsip: add a flag to ignore 183 responses if no SDP present"
Friendly Automation [Tue, 12 Mar 2019 15:10:12 +0000 (10:10 -0500)]
Merge "chan_pjsip: add a flag to ignore 183 responses if no SDP present"

12 days agopartial-inlining: disable partial-inlining if gcc>=8.2.1
Chris-Savinovich [Thu, 7 Mar 2019 19:48:04 +0000 (13:48 -0600)]
partial-inlining: disable partial-inlining if gcc>=8.2.1

Apply flag -fno-partial-inlining on default optimization if and only if
gcc version >= 8.2.1 (this is the current ver on Fedora and Ubuntu).
This is done to avoid a bug that causes arithmetic calculations to fail
if the following conditions are met:
1. TEST_FRAMEWORK on
2. DONT_OPTIMIZE off
3. Fedora and Ubuntu
4. GCC 8.2.1
5. There must exist a certain combination of multithreading.
6. Optimization level -O2 and -O3
7. Flag -fpartial-inline activated (default when optimization level>=2)
The following link points to a similar gcc bug reported in 2015. This leads me
to believe the bug has regressed. Note I am not able to replicate this bug
in an environment other than Asterisk + Test Framework + Test_cel because the
multithreading combination that causes it seems to be unique. Therefore I
am temporarily abandoning any thoughts of reporting the new occurrence of this
bug to gcc.gnu.org.  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65307

Change-Id: Ibd1afe60e0a38b88e85fdcd9b051004601c2f102

12 days agoMerge "app_meetme: Don't mute joining admins if conference is muted"
George Joseph [Mon, 11 Mar 2019 14:49:03 +0000 (09:49 -0500)]
Merge "app_meetme: Don't mute joining admins if conference is muted"

12 days agoMerge "res/res_rtp_asterisk.c: Fixing possible divide by zero"
Friendly Automation [Mon, 11 Mar 2019 14:45:28 +0000 (09:45 -0500)]
Merge "res/res_rtp_asterisk.c: Fixing possible divide by zero"

12 days agostasis: Improve topic/subscription names and statistics.
Joshua Colp [Thu, 7 Mar 2019 12:28:31 +0000 (08:28 -0400)]
stasis: Improve topic/subscription names and statistics.

Topic names now follow: <subsystem>:<functionality>[/<object>]

This ensures that they are all unique, and also provides better
insight in to what each topic is for.

Subscriber ids now also use the main topic name they are
subscribed to and an incrementing integer as their identifier to
make it easier to understand what the subscription is primarily
responsible for.

Both the CLI commands for listing topic and subscription statistics
now sort to make it a bit easier to see what is going on.

Subscriptions will now show all topics that they are receiving messages
from, not just the main topic they were subscribed to.

ASTERISK-28335

Change-Id: I484e971a38c3640f2bd156282e532eed84bf220d

13 days agochan_dahdi: Add logical group at DAHDIChannel event and CHANNEL function
cirillor [Tue, 5 Mar 2019 14:15:00 +0000 (11:15 -0300)]
chan_dahdi: Add logical group at DAHDIChannel event and CHANNEL function

Add logical group at DAHDIChannel event
and create "dahdi_group" at CHANNEL function.

ASTERISK-28317

Change-Id: Ic1f834cd53982a9707a9748395ee746d6575086a

13 days agores/res_rtp_asterisk.c: Fixing possible divide by zero
sungtae kim [Sun, 3 Mar 2019 15:20:24 +0000 (16:20 +0100)]
res/res_rtp_asterisk.c: Fixing possible divide by zero

Currently, when the Asterisk calculates rtp statistics, it uses
sample_count as a unsigned integer parameter. This would be fine
for most of cases, but in case of large enough number of sample_count,
this might be causing the divide by zero error.

ASTERISK-28321

Change-Id: If7e0629abaceddd2166eb012456c53033ea26249

2 weeks agores_musiconhold: Remove redundant option parsing
Sean Bright [Fri, 8 Mar 2019 20:12:24 +0000 (15:12 -0500)]
res_musiconhold: Remove redundant option parsing

Change-Id: I481fabd8eaf2e4e7ffb5c8285b294742826e7d12

2 weeks agochan_pjsip: add a flag to ignore 183 responses if no SDP present
Torrey Searle [Mon, 4 Mar 2019 07:50:18 +0000 (08:50 +0100)]
chan_pjsip: add a flag to ignore 183 responses if no SDP present

chan_sip will always ignore 183 responses that do not contain SDP
however, chan_pjsip will currently always translate it into a
183 with SDP.  This new flag allows chan_pjsip to have the same
behavior as chan_sip.

ASTERISK-28322 #close

Change-Id: If81cfaa17c11b6ac703e3d71696f259d86c6be4a

2 weeks agojansson: json_pack with new format to verify required runtime version.
Corey Farrell [Thu, 7 Mar 2019 23:17:49 +0000 (18:17 -0500)]
jansson: json_pack with new format to verify required runtime version.

Add a json_pack at startup that will fail if runtime links against a
library older than jansson-2.11.

Change-Id: I101aebafe0f9407650206f7c552dad3d69377b5a

2 weeks agoMerge "res_stasis: Add ability to switch applications."
George Joseph [Fri, 8 Mar 2019 18:43:45 +0000 (12:43 -0600)]
Merge "res_stasis: Add ability to switch applications."

2 weeks agoMerge "Replace calls to strtok() with strtok_r()"
George Joseph [Fri, 8 Mar 2019 18:42:44 +0000 (12:42 -0600)]
Merge "Replace calls to strtok() with strtok_r()"

2 weeks agoMerge "samples: Fix comment typo in pjsip.conf.sample"
Friendly Automation [Fri, 8 Mar 2019 18:11:42 +0000 (12:11 -0600)]
Merge "samples: Fix comment typo in pjsip.conf.sample"

2 weeks agoMerge "bridging: Add creation timestamps"
George Joseph [Fri, 8 Mar 2019 17:11:36 +0000 (11:11 -0600)]
Merge "bridging: Add creation timestamps"

2 weeks agoapp_meetme: Don't mute joining admins if conference is muted
Sean Bright [Thu, 7 Mar 2019 23:15:05 +0000 (18:15 -0500)]
app_meetme: Don't mute joining admins if conference is muted

ASTERISK-28328 #close

Change-Id: I4f6069fb34923b7521520c2a205a1e56227e592b

2 weeks agoReplace calls to strtok() with strtok_r()
Sean Bright [Wed, 6 Mar 2019 21:04:57 +0000 (16:04 -0500)]
Replace calls to strtok() with strtok_r()

strtok() uses a static buffer, making it not thread safe.

Also add a #define to cause a compile failure if strtok is used.

Change-Id: Icce265153e1e65adafa8849334438ab6d190e541

2 weeks agosamples: Fix comment typo in pjsip.conf.sample
Sean Bright [Thu, 7 Mar 2019 22:05:42 +0000 (17:05 -0500)]
samples: Fix comment typo in pjsip.conf.sample

Change-Id: I84a45c3d9fd26ca61aca99927eec83b57f1de857

2 weeks agores_stasis: Add ability to switch applications.
Ben Ford [Thu, 7 Mar 2019 13:52:20 +0000 (07:52 -0600)]
res_stasis: Add ability to switch applications.

Added the ability to move between Stasis applications within Stasis.
This can be done by calling 'move' in an application, providing (at
minimum) the channel's id and the application to switch to. If the
application is not registered or active, nothing will happen and the
channel will remain in the current application, and an event will be
triggered to let the application know that the move failed. The event
name is "ApplicationMoveFailed", and provides the "destination" that the
channel was attempting to move to, as well as the usual channel
information. Optionally, a list of arguments can be passed to the
function call for the receiving application. A full example of a 'move'
call would look like this:

client.channels.move(channelId, app, appArgs)

The control object used to control the channel in Stasis can now switch
which application it belongs to, rather than belonging to one Stasis
application for its lifetime. This allows us to use the same control
object instead of having to tear down the current one and create
another.

ASTERISK-28267 #close

Change-Id: I43d12b10045a98a8d42541889b85695be26f288a

2 weeks agoMerge "sip_to_pjsip: Make multiline comment parsing consistent with Asterisk"
Friendly Automation [Tue, 5 Mar 2019 15:17:38 +0000 (09:17 -0600)]
Merge "sip_to_pjsip: Make multiline comment parsing consistent with Asterisk"

2 weeks agoMerge "app_queue: Handle empty 'interface' in queue member config"
Friendly Automation [Tue, 5 Mar 2019 14:50:57 +0000 (08:50 -0600)]
Merge "app_queue: Handle empty 'interface' in queue member config"

2 weeks agoMerge "res_pjsip_registrar: blocked threads on reliable transport shutdown take 3"
Joshua Colp [Tue, 5 Mar 2019 13:16:05 +0000 (07:16 -0600)]
Merge "res_pjsip_registrar: blocked threads on reliable transport shutdown take 3"

2 weeks agoMerge "basic-pbx: Update configuration to work with current modules."
Joshua Colp [Tue, 5 Mar 2019 13:04:50 +0000 (07:04 -0600)]
Merge "basic-pbx: Update configuration to work with current modules."

2 weeks agoapp_queue: Handle empty 'interface' in queue member config
Sean Bright [Mon, 4 Mar 2019 22:05:30 +0000 (17:05 -0500)]
app_queue: Handle empty 'interface' in queue member config

While the 'interface' column is a NOT NULL, the empty string is still
allowed. res_config_odbc treats the empty string as a NULL and we crash
when trying to dereference.

Also cleaned up an adjacent error message for consistency.

ASTERISK-28168 #close

Change-Id: I55e012b540fbcda99bb40bede3099b7ae5db8202

2 weeks agosip_to_pjsip: Make multiline comment parsing consistent with Asterisk
Sean Bright [Mon, 4 Mar 2019 18:36:01 +0000 (13:36 -0500)]
sip_to_pjsip: Make multiline comment parsing consistent with Asterisk

In Asterisk configuration, a multiline comment starts with ;-- as long as it is
not followed by another dash (i.e. ;--- is not a multiline comment).

ASTERISK-28323 #close

Change-Id: I32dc38e0fac01d3c0805d27d35d2365a7c37ca72

2 weeks agoMerge "res_pjsip_diversion: Use static pj_str_t for Diversion header names"
Friendly Automation [Mon, 4 Mar 2019 12:13:48 +0000 (06:13 -0600)]
Merge "res_pjsip_diversion: Use static pj_str_t for Diversion header names"

2 weeks agoMerge "CHANGES: Document addition of 'wrapuptime' argument to AddQueueMember()"
Joshua Colp [Mon, 4 Mar 2019 11:50:47 +0000 (05:50 -0600)]
Merge "CHANGES: Document addition of 'wrapuptime' argument to AddQueueMember()"

2 weeks agobasic-pbx: Update configuration to work with current modules.
Joshua Colp [Thu, 28 Feb 2019 12:24:59 +0000 (12:24 +0000)]
basic-pbx: Update configuration to work with current modules.

The res_pjsip_websocket module requires the res_http_websocket
module so ensure it is loaded. As well the res_pjsip_notify
module needs the pjsip_notify.conf configuration file so
ensure it is installed.

ASTERISK-28272

Change-Id: I261659b84e7a6ac4cb49990d9badb4b2ad01bacd

3 weeks agobridging: Add creation timestamps
sungtae kim [Fri, 8 Feb 2019 21:32:18 +0000 (22:32 +0100)]
bridging: Add creation timestamps

This small feature will help to checking the bridge's status to
figure out which bridge is in old/zombie or not. Also added
detail items for the 'bridge show *' cli to provide more detail
info. And added creation item to the ARI as well.

ASTERISK-28279

Change-Id: I460238c488eca4d216b9176576211cb03286e040

3 weeks agores_pjsip_diversion: Use static pj_str_t for Diversion header names
Sean Bright [Thu, 28 Feb 2019 16:01:15 +0000 (11:01 -0500)]
res_pjsip_diversion: Use static pj_str_t for Diversion header names

PJSIP assumes that these header names are not allocated, and does not
clone the name strings when reusing headers.

Block unload of res_pjsip_diversion until shutdown to ensure static
memory stays valid.

ASTERISK-28312 #close

Change-Id: Ibd6ea55ec4a604bbd43ac07f8d0b54da2c39b8b9

3 weeks agoMerge "res_config_odbc: Avoid deadlock when max_connections = 1"
Kevin Harwell [Fri, 1 Mar 2019 22:20:45 +0000 (16:20 -0600)]
Merge "res_config_odbc: Avoid deadlock when max_connections = 1"

3 weeks agoCHANGES: Document addition of 'wrapuptime' argument to AddQueueMember()
Rodrigo Ramírez Norambuena [Fri, 1 Mar 2019 21:17:30 +0000 (18:17 -0300)]
CHANGES: Document addition of 'wrapuptime' argument to AddQueueMember()

Change-Id: Ieb332d018ae3f2fc82b9465381fde0f299af1611

3 weeks agoMerge "menuselect: Add license header to menuselect_gtk.c"
Friendly Automation [Fri, 1 Mar 2019 21:01:00 +0000 (15:01 -0600)]
Merge "menuselect: Add license header to menuselect_gtk.c"

3 weeks agoMerge "Revert "pjsip_message_filter: Only do interface lookup for wildcard addresses.""
Joshua Colp [Fri, 1 Mar 2019 14:02:21 +0000 (08:02 -0600)]
Merge "Revert "pjsip_message_filter: Only do interface lookup for wildcard addresses.""

3 weeks agomenuselect: Add license header to menuselect_gtk.c
Sean Bright [Thu, 28 Feb 2019 21:36:36 +0000 (16:36 -0500)]
menuselect: Add license header to menuselect_gtk.c

This file was added to the Subversion repository on 2007-03-15 by
Russell Bryant, a Digium employee at the time.

ASTERISK-24173 #close

Change-Id: Ie866fa9d31d550467613d362b35b03c031ee594d

3 weeks agores_config_odbc: Avoid deadlock when max_connections = 1
Sean Bright [Thu, 28 Feb 2019 01:09:03 +0000 (20:09 -0500)]
res_config_odbc: Avoid deadlock when max_connections = 1

Rather than calling ast_odbc_find_table() in the prepare callback, call
it beforehand and pass it in to the callback to avoid the need for a
second connection.

ASTERISK-28166 #close

Change-Id: I6f8a0b9990d636fd6bc1a92ed70f7050d2436202

3 weeks agores_pjsip_sdp_rtp: Fix return code from apply_negotiated_sdp_stream
George Joseph [Wed, 30 Jan 2019 19:25:55 +0000 (12:25 -0700)]
res_pjsip_sdp_rtp:  Fix return code from apply_negotiated_sdp_stream

apply_negotiated_sdp_stream was returning a "1" when no joint
capabilities were found on an outgoing call instead of a "-1".
This indicated to res_pjsip_session that the handler DID handle
the sdp when in fact it didn't.  Without the appropriate setup,
a subsequent media frame coming in would have an invalid stream_num
and cause a seg fault when the stream was attempted to be retrieved.

apply_negotiated_sdp_stream now returns the correct "-1" and any
media is now discarded before it reaches the core stream processing.

ASTERISK-28260
Reported by: Sotiris Ganouris

Change-Id: Ia095cb16b4862f2f6ad6d2d2a77453fa2542371f

3 weeks agoMerge "res_pjsip_config_wizard: Don't crash if misconfigured"
Joshua Colp [Thu, 28 Feb 2019 13:47:51 +0000 (07:47 -0600)]
Merge "res_pjsip_config_wizard: Don't crash if misconfigured"

3 weeks agoRevert "pjsip_message_filter: Only do interface lookup for wildcard addresses."
Sean Bright [Thu, 28 Feb 2019 12:51:07 +0000 (06:51 -0600)]
Revert "pjsip_message_filter: Only do interface lookup for wildcard addresses."

This reverts commit d524ad523d0d32babba309810b5bccd09cb7f467.

Reason for revert: This causes Contact and Via headers to have the wrong
transport address.

ASTERISK-28309 #close

Change-Id: Ibba4d6176f68e39279fcd9a545f81d56e747bed8

3 weeks agoMerge "res/res_rtp_asterisk: smoother can cause wrong timestamps if dtmf happen"
Friendly Automation [Thu, 28 Feb 2019 11:44:47 +0000 (05:44 -0600)]
Merge "res/res_rtp_asterisk: smoother can cause wrong timestamps if dtmf happen"

3 weeks agores_pjsip_config_wizard: Don't crash if misconfigured
Sean Bright [Thu, 28 Feb 2019 01:52:26 +0000 (20:52 -0500)]
res_pjsip_config_wizard: Don't crash if misconfigured

If both send_registrations and send_auth are both set to yes,
outbound_auth/username must be set or we crash.

ASTERISK-27992 #close

Change-Id: I6418d56de1ae53f80393b314c2584048fbf7f11d

3 weeks agoMerge "res_mwi_devstate.c: New module to allow presence subs to VM boxes"
Friendly Automation [Wed, 27 Feb 2019 23:40:32 +0000 (17:40 -0600)]
Merge "res_mwi_devstate.c: New module to allow presence subs to VM boxes"

3 weeks agores_pjsip_registrar: blocked threads on reliable transport shutdown take 3
Kevin Harwell [Wed, 20 Feb 2019 17:03:01 +0000 (11:03 -0600)]
res_pjsip_registrar: blocked threads on reliable transport shutdown take 3

When a contact was removed by the registrar it did not always check to see if
the circumstances involved a monitored reliable transport. For instance, if the
'remove_existing' option was set to 'true' then when existing contacts were
removed due to 'max_contacts' being reached, those existing contacts being
removed did not unregister the transport monitor.

Also, it was possible to add more than one monitor on a reliable transport for
a given aor and contact.

This patch makes it so all contact removals done by the registrar also remove
any associated transport monitors if necessary. It also makes it so duplicate
monitors cannot be added for a given transport.

ASTERISK-28213

Change-Id: I94b06f9026ed177d6adfd538317c784a42c1b17a

3 weeks agoCI: Update jenkinsfiles with new Gerrit URLs
George Joseph [Wed, 27 Feb 2019 16:37:14 +0000 (09:37 -0700)]
CI: Update jenkinsfiles with new Gerrit URLs

The recent upgrade of Gerrit to 2.16 elimiated referencing a
repository in a way the jenkinsfiles were relying on so
the URL references were changed to a more consistent and supported
format.

Change-Id: I2e8e3f213b9a96bb1b27665eca4a9a24bc49820e
(cherry picked from commit 5ce084579f897096163b4e0c2ed4e8e1a8558cca)

3 weeks agoMerge "rest-api-templates/asterisk_processor - replace http line breaks with line...
Joshua C. Colp [Tue, 26 Feb 2019 15:14:02 +0000 (09:14 -0600)]
Merge "rest-api-templates/asterisk_processor - replace http line breaks with line feed"

3 weeks agores_mwi_devstate.c: New module to allow presence subs to VM boxes
George Joseph [Wed, 20 Feb 2019 19:15:10 +0000 (12:15 -0700)]
res_mwi_devstate.c: New module to allow presence subs to VM boxes

This module allows presence subscriptions to voicemail boxes.  This
allows common BLF keys to act as voicemail waiting indicators.

ASTERISK-28301

Change-Id: I62a246c24f3d7d432e33e22d7a4a57c15c292fdd

3 weeks agores/res_rtp_asterisk: smoother can cause wrong timestamps if dtmf happen
Torrey Searle [Mon, 25 Feb 2019 15:41:44 +0000 (16:41 +0100)]
res/res_rtp_asterisk: smoother can cause wrong timestamps if dtmf happen

Delivery timeval in the smoother object will fall behind while a DTMF is
being generated.  This can eventually lead to invalid rtp timestamps.
To prevent this from happening the smoother needs to be reset after every
DTMF to keep the timing up to date.

ASTERISK-28303 #close

Change-Id: Iaba3f7b428ebd72a4caa90e13b829ab4f088310f

3 weeks agoMerge "http.c: Support separated HTTP request"
Friendly Automation [Tue, 26 Feb 2019 13:17:53 +0000 (07:17 -0600)]
Merge "http.c: Support separated HTTP request"

3 weeks agoMerge "taskprocessor: Enable subsystems and overload by subsystem"
Joshua C. Colp [Tue, 26 Feb 2019 13:04:15 +0000 (07:04 -0600)]
Merge "taskprocessor:  Enable subsystems and overload by subsystem"

3 weeks agoMerge "app_queue: Enable set the wrapuptime from AddQueueMember application"
Friendly Automation [Tue, 26 Feb 2019 12:52:06 +0000 (06:52 -0600)]
Merge "app_queue: Enable set the wrapuptime from AddQueueMember application"

3 weeks agoMerge "res_ari_applications: Fix incorrect call to ao2_lock."
Joshua C. Colp [Tue, 26 Feb 2019 12:26:16 +0000 (06:26 -0600)]
Merge "res_ari_applications: Fix incorrect call to ao2_lock."

3 weeks agoMerge "Core: Increase AST_PBX_MAX_STACK to 512 if not LOW_MEMORY"
Joshua C. Colp [Tue, 26 Feb 2019 12:08:45 +0000 (06:08 -0600)]
Merge "Core:  Increase AST_PBX_MAX_STACK to 512 if not LOW_MEMORY"

3 weeks agorest-api-templates/asterisk_processor - replace http line breaks with line feed
Kevin Harwell [Mon, 25 Feb 2019 21:32:27 +0000 (15:32 -0600)]
rest-api-templates/asterisk_processor - replace http line breaks with line feed

Including line breaks (<br>, <br/>, <br />) in certain parts of the rest-api
json definition (e.g. summary, notes) displays them correctly in swagger.
However, when the field gets converted to the wiki format those breaks get
escaped and show up in the text as the actual string literal "<br>" etc...

This patch makes it so when converting to the wiki format it replaces all line
break values (<br>, etc...) with line feeds ('\n').

Change-Id: Ie1c9faa0d1c5d622804cc0a21ce769095b08aa3d

3 weeks agores_ari_applications: Fix incorrect call to ao2_lock.
Joshua C. Colp [Mon, 25 Feb 2019 12:10:59 +0000 (08:10 -0400)]
res_ari_applications: Fix incorrect call to ao2_lock.

When listing the applications the apps lock was incorrectly
locked twice instead of being locked and then unlocked.

ASTERISK-28302

Change-Id: If7d064592a9e88c0f1049214c50e02be6dabf79e

4 weeks agores_pjsip_sdp_rtp: Allow only single ssrc attribute.
Joshua Colp [Thu, 21 Feb 2019 18:06:23 +0000 (18:06 +0000)]
res_pjsip_sdp_rtp: Allow only single ssrc attribute.

When processing SSRC attributes we were iterating through
all of them, even though we only need to know the remote
SSRC once. This was problematic because some browsers group
SSRCs together on a stream, and due to our negotiation only
end up using the first one. Since we set the second one as
the remote SSRC we would drop the received media from them
instead of allowing it through.

In the future this may be extended to allow SSRC groups
and to use information from the attributes.

Change-Id: I4dc87087dbe56a83aa65f0f897bbd4ca75ec1270

4 weeks agoMerge "stasis: Store subscriber uniqueids with topic statistics."
Joshua C. Colp [Thu, 21 Feb 2019 16:17:28 +0000 (10:17 -0600)]
Merge "stasis: Store subscriber uniqueids with topic statistics."

4 weeks agoMerge "res_pjsip_session Added rtcp stats result vector into the session"
Joshua C. Colp [Thu, 21 Feb 2019 12:30:52 +0000 (06:30 -0600)]
Merge "res_pjsip_session Added rtcp stats result vector into the session"

4 weeks agohttp.c: Support separated HTTP request
Sungtae Kim [Wed, 9 Jan 2019 10:27:03 +0000 (10:27 +0000)]
http.c: Support separated HTTP request

Currently, the Asterisk does not support seperated HTTP request.
This patch make the Asterisk enables to wait lest part of HTTP request.
Also increases acceptable HTTP body length to 40k to support more
larger request.

ASTERISK-28236

Change-Id: I48a401aa64a21c3b37bf3cb4e0486d64b7dd8aa1

4 weeks agoCore: Increase AST_PBX_MAX_STACK to 512 if not LOW_MEMORY
George Joseph [Wed, 20 Feb 2019 18:48:25 +0000 (11:48 -0700)]
Core:  Increase AST_PBX_MAX_STACK to 512 if not LOW_MEMORY

The current settings AST_PBX_MAX_STACK is 128 entries which is
too low for some FreePBX installations with complex parking
arrangements.  Increased to 512 if LOW_MEMORY is not defined.

ASTERISK-28300

Change-Id: I7c4b540bc92e6642df0f3da639b003f7da8b1299

4 weeks agostasis: Store subscriber uniqueids with topic statistics.
Joshua C. Colp [Wed, 20 Feb 2019 18:22:31 +0000 (14:22 -0400)]
stasis: Store subscriber uniqueids with topic statistics.

This change provides an easier mechanism to determine which
subscribers are subscribed to a topic. Using this you can
inspect the specific subscribers for further details.

Change-Id: I8deea21703cd5c5357b85593b46c3eaf24e18c0c

4 weeks agotaskprocessor: Enable subsystems and overload by subsystem
George Joseph [Fri, 15 Feb 2019 18:53:50 +0000 (11:53 -0700)]
taskprocessor:  Enable subsystems and overload by subsystem

To prevent one subsystem's taskprocessors from causing others
to stall, new capabilities have been added to taskprocessors.

* Any taskprocessor name that has a '/' will have the part
  before the '/' saved as its "subsystem".
  Examples:
  "sorcery/acl-0000006a" and "sorcery/aor-00000019"
  will be grouped to subsystem "sorcery".
  "pjsip/distributor-00000025" and "pjsip/distributor-00000026"
  will bn grouped to subsystem "pjsip".
  Taskprocessors with no '/' have an empty subsystem.

* When a taskprocessor enters high-water alert status and it
  has a non-empty subsystem, the subsystem alert count will
  be incremented.

* When a taskprocessor leaves high-water alert status and it
  has a non-empty subsystem, the subsystem alert count will be
  decremented.

* A new api ast_taskprocessor_get_subsystem_alert() has been
  added that returns the number of taskprocessors in alert for
  the subsystem.

* A new CLI command "core show taskprocessor alerted subsystems"
  has been added.

* A new unit test was addded.

REMINDER: The taskprocessor code itself doesn't take any action
based on high-water alerts or overloading.  It's up to taskprocessor
users to check and take action themselves.  Currently only the pjsip
distributor does this.

* A new pjsip/global option "taskprocessor_overload_trigger"
  has been added that allows the user to select the trigger
  mechanism the distributor uses to pause accepting new requests.
  "none": Don't pause on any overload condition.
  "global": Pause on ANY taskprocessor overload (the default and
  current behavior)
  "pjsip_only": Pause only on pjsip taskprocessor overloads.

* The core pjsip pool was renamed from "SIP" to "pjsip" so it can
  be properly grouped into the "pjsip" subsystem.

* stasis taskprocessor names were changed to "stasis" as the
  subsystem.

* Sorcery core taskprocessor names were changed to "sorcery" to
  match the object taskprocessors.

Change-Id: I8c19068bb2fc26610a9f0b8624bdf577a04fcd56

4 weeks agoARI event type filtering
Kevin Harwell [Fri, 8 Feb 2019 20:48:27 +0000 (14:48 -0600)]
ARI event type filtering

Event type filtering is now enabled, and configurable per application. An app is
now able to specify which events are sent to the application by configuring an
allowed and/or disallowed list(s). This can be done by issuing the following:

PUT /applications/{applicationName}/eventFilter

And then enumerating the allowed/disallowed event types as a body parameter.

ASTERISK-28106

Change-Id: I9671ba1fcdb3b6c830b553d4c5365aed5d588d5b

4 weeks agoMerge "json.c/strings.c - Add a couple of utility functions"
George Joseph [Wed, 20 Feb 2019 15:53:33 +0000 (09:53 -0600)]
Merge "json.c/strings.c - Add a couple of utility functions"

4 weeks agoMerge "chan_pjsip: Changed to continued after invalid media for pjsip show channelstats"
Friendly Automation [Wed, 20 Feb 2019 15:00:08 +0000 (09:00 -0600)]
Merge "chan_pjsip: Changed to continued after invalid media for pjsip show channelstats"

4 weeks agoMerge "CI: Use tmpfs option to Docker instead of mount."
George Joseph [Wed, 20 Feb 2019 14:31:33 +0000 (08:31 -0600)]
Merge "CI: Use tmpfs option to Docker instead of mount."

4 weeks agoCI: Use tmpfs option to Docker instead of mount.
Joshua Colp [Tue, 19 Feb 2019 16:06:32 +0000 (16:06 +0000)]
CI: Use tmpfs option to Docker instead of mount.

Some tests require Asterisk to execute scripts which
are stored in /tmp. When mount is used for tmpfs there
is no ability to allow scripts to be executed from
that location.

This change switches to using tmpfs which can be told
to allow executables to be run from /tmp.

Change-Id: I0e598ca2b76af1f7f2d29f0da7b1731a214a291a

4 weeks agojson.c/strings.c - Add a couple of utility functions
Kevin Harwell [Fri, 8 Feb 2019 20:47:35 +0000 (14:47 -0600)]
json.c/strings.c - Add a couple of utility functions

Added 'ast_json_object_string_get' to the JSON wrapper in order to make it a
little easier to retrieve a string field from the JSON object.

Also added an 'ast_strings_equal' function that safely checks (checks for NULLs)
for equality between two strings.

Change-Id: I26f0a16d61537505eb41b4b05ef2e6d67fc2541b

4 weeks agoapp_queue: Enable set the wrapuptime from AddQueueMember application
Rodrigo Ramírez Norambuena [Tue, 11 Dec 2018 14:15:01 +0000 (11:15 -0300)]
app_queue: Enable set the wrapuptime from AddQueueMember application

This change add ability to set the wrapuptime per-member using the
AddQueueMember application.

The feature to set wrapuptime per member was include in the issue
ASTERISK-27483 for static member by configuration file and was not
added to set from AddQueueMember.

ASTERISK-28055 #close

Change-Id: I7c7ee4a6f804922cd7c42cb02eea26eb3806c6cf

4 weeks agores/res_rtp_asterisk: clear smoother when local bridging
Torrey Searle [Tue, 12 Feb 2019 09:50:55 +0000 (10:50 +0100)]
res/res_rtp_asterisk: clear smoother when local bridging

p2p_write updates txformat but doesn't require a smoother.  If a smoother
was created by another bridge type the smoother could fall out of date causing
one way audio issues.  To prevent this the smoother is now destroyed on the
start of native bridge.

ASTERISK-28284 #close

Change-Id: I84e67f144963787fff9b4d79ac500514fb40cdc6

5 weeks agochan_pjsip: Changed to continued after invalid media for pjsip show channelstats
sungtae kim [Thu, 14 Feb 2019 23:09:30 +0000 (00:09 +0100)]
chan_pjsip: Changed to continued after invalid media for pjsip show channelstats

Currently, the pjsip show channelstats cli does not show channel's
stats after hits the invalid channel info. This makes hard to use
this cli. Changed to keep iterate after hits the invalid channel
info.

ASTERISK-28292

Change-Id: I3efdff1c9e1b1efd3c971fb82ae77aa133a6f43c

5 weeks agores_pjsip_session Added rtcp stats result vector into the session
Sungtae Kim [Tue, 22 Jan 2019 12:02:50 +0000 (13:02 +0100)]
res_pjsip_session Added rtcp stats result vector into the session

Currently, the Asterisk's pjsip_session module does not keeping the
rtcp's stats info after it was removed. But by adding the results
vector and keeping it until session is destroying, it can give more
useful information for other modules.

ASTERISK-28253

Change-Id: Ib25c2d3fc4da084aecfde2a82c1b1d733bd64fa5

5 weeks agoMerge "ci: Rerun unit tests when non-code changes occur."
George Joseph [Mon, 11 Feb 2019 15:27:59 +0000 (09:27 -0600)]
Merge "ci: Rerun unit tests when non-code changes occur."

5 weeks agoMerge "res_odbc: Add basic query logging."
Friendly Automation [Mon, 11 Feb 2019 14:35:02 +0000 (08:35 -0600)]
Merge "res_odbc: Add basic query logging."

6 weeks agoci: Rerun unit tests when non-code changes occur.
Joshua Colp [Thu, 7 Feb 2019 15:52:56 +0000 (15:52 +0000)]
ci: Rerun unit tests when non-code changes occur.

This change makes it so that even if non-code changes
occur (such as commit message changing) unit tests
will still be run and result in a verification.

ASTERISK-28251

Change-Id: I6491fff7c93e5d5cd8e41054486968bf66c4f608

6 weeks agores_pjsip_registrar: lock transport monitor when setting 'removing' flag
Kevin Harwell [Thu, 7 Feb 2019 15:23:37 +0000 (09:23 -0600)]
res_pjsip_registrar: lock transport monitor when setting 'removing' flag

A previous patch attempt to mitigate blocked threads on transport shutdown for
a given contact. It was thought that a second lock could be avoided by checking
the 'removing' flag on the transport monitor twice (once before and once after
the normal named aor locking). However as with usual threading issues if the
timing was right the original problem still occured.

This patch adds locking around the first 'removing' flag check and set, thus
nullifying the secondary check, so it was removed.

ASTERISK-28213

Change-Id: Iaa8e36e5311789549b76d8de42dfcea96013b2ed

6 weeks agores_odbc: Add basic query logging.
Joshua Colp [Wed, 6 Feb 2019 12:16:01 +0000 (12:16 +0000)]
res_odbc: Add basic query logging.

When Asterisk is connected and used with a database the response
time of the database can cause problems in Asterisk if it is long.
Normally the only way to see this problem would be to retrieve a
backtrace from Asterisk and examine where things are blocked, or
examine the database to see if there is any indication of a
problem.

This change adds some basic query logging to make it easier to
investigate such a problem. When logging is enabled res_odbc will
now keep track of the number of queries executed, as well as the
query that has taken the longest time to execute. There is also
an option which will cause a WARNING message to be output if a
query takes longer than a configurable amount of time to execute.

This makes it easier and clearer for users that their database may
be experiencing a problem that could impact Asterisk.

ASTERISK-28277

Change-Id: I173cf4928b10754478a6a8c27dfa96ede0f058a6

6 weeks agoMerge "sounds: Sort 'core show sounds' output"
George Joseph [Wed, 6 Feb 2019 13:13:07 +0000 (07:13 -0600)]
Merge "sounds: Sort 'core show sounds' output"

6 weeks agomain/cdr: Fixed cdr start overwriting
Sungtae Kim [Wed, 5 Dec 2018 22:09:49 +0000 (23:09 +0100)]
main/cdr: Fixed cdr start overwriting

The CDR was overwriting the start time when the call continued the
dialplan from the ARI stasis or a Local channel was originated.

This change fixes this by no longer reinitializing the CDR when
transitioning out of the dialed pending state to the single state.

ASTERISK-28181

Change-Id: I921bc04064b6cff1deb2eea56a94d86489561cdc

6 weeks agoFix deadlock handling subscribe req during res_parking reload
Giuseppe Sucameli [Tue, 20 Nov 2018 00:44:23 +0000 (01:44 +0100)]
Fix deadlock handling subscribe req during res_parking reload

Split destroy_hint method to separate hint removal and extension hint
state changed callback, the latter now called via stasis.
This avoids deadlock between res_parking reload that is removing the
parking lot and the related hint and subscribe requests coming for the
same parking lot.

ASTERISK-28173

Change-Id: I5b03c3455b3b12b6f83cea4cc34f4b4b20444f7e