asterisk/asterisk.git
19 months 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

19 months 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."

19 months 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."

19 months 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

19 months 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

19 months 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

19 months 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"

19 months 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

19 months 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

19 months agoMerge "pjsip/config_global: regcontext context not created"
Friendly Automation [Tue, 5 Feb 2019 14:48:28 +0000 (08:48 -0600)]
Merge "pjsip/config_global: regcontext context not created"

19 months agoMerge "res_stasis: Auto-create context and extens on Stasis app launch."
George Joseph [Tue, 5 Feb 2019 14:26:46 +0000 (08:26 -0600)]
Merge "res_stasis: Auto-create context and extens on Stasis app launch."

19 months agoMerge "Added ARI resource /ari/asterisk/ping"
George Joseph [Tue, 5 Feb 2019 14:15:52 +0000 (08:15 -0600)]
Merge "Added ARI resource /ari/asterisk/ping"

19 months agosounds: Sort 'core show sounds' output
Sean Bright [Mon, 4 Feb 2019 19:55:01 +0000 (14:55 -0500)]
sounds: Sort 'core show sounds' output

Change-Id: Ib39052a745040f75eb635f15a042da15b20e22ab

19 months agoMerge "bundled-jansson: On OpenSuse Leap libjansson.a was placed in lib64"
Joshua C. Colp [Mon, 4 Feb 2019 17:28:43 +0000 (11:28 -0600)]
Merge "bundled-jansson:  On OpenSuse Leap libjansson.a was placed in lib64"

19 months agores_stasis: Auto-create context and extens on Stasis app launch.
Ben Ford [Tue, 29 Jan 2019 16:48:49 +0000 (10:48 -0600)]
res_stasis: Auto-create context and extens on Stasis app launch.

At AstriCon, there was a strong desire for the ability to completely
bypass dialplan when using ARI. This is possible through the automatic
creation of a context and a couple of extensions whenever an application
is started.

For example, if you have an application named 'ari-example', a context
named 'stasis-ari-example' will be automatically created whenever this
application is started as long as one does not already exist. Two
extensions (a match-all extension for Stasis and a 'h' extension) are
created within this context. Any endpoint that registers to Asterisk
within this context will send all calls to the corresponding Stasis
application. When the application is destroyed, the context is removed.

ASTERISK-28104 #close

Change-Id: Ie35bd93075e05b05e3ae129a83c9426931b7ebac

19 months agobundled-jansson: On OpenSuse Leap libjansson.a was placed in lib64
George Joseph [Mon, 4 Feb 2019 13:09:57 +0000 (06:09 -0700)]
bundled-jansson:  On OpenSuse Leap libjansson.a was placed in lib64

On OpenSuse Leap, libjansson.a is installed in
third-party/jansson/dest/lib64 instead of lib (which is where
the top-level makeopts looks).  This causes a link failure.

* Updated jansson/Makefile to add an explicit --libdir to force
  the installation to third-party/jansson/dest/lib.

ASTERISK-28271
Reported by: David Wilcox

Change-Id: Ibf8af75e5da13562105fcc39ed898c6ef0b5a5f3

19 months agoAdded ARI resource /ari/asterisk/ping
sungtae kim [Mon, 28 Jan 2019 23:21:28 +0000 (00:21 +0100)]
Added ARI resource /ari/asterisk/ping

Added ARI resource.
GET /ari/asterisk/ping : It returns "pong" message with timestamp
and asterisk id. It would be useful for simple heath check.

Change-Id: I8d24e1dcc96f60f73437c68d9463ed746f688b29

19 months agopjsip/config_global: regcontext context not created
Kevin Harwell [Tue, 15 Jan 2019 23:20:30 +0000 (17:20 -0600)]
pjsip/config_global: regcontext context not created

The context specified by 'regcontext' was not being created, so when Asterisk
attempted to later dynamically add an extension it would fail. This patch now
creates the context if a 'regcontext' is specified.

ASTERISK-28238

Change-Id: I0f36cf4ab0a93ff4b1cc5548d617ecfd45e09265

19 months agomedia_index.c: Refactored so it doesn't cache the index
George Joseph [Tue, 22 Jan 2019 15:02:06 +0000 (08:02 -0700)]
media_index.c: Refactored so it doesn't cache the index

Testing revealed that the cache added no benefit but that it could
consume excessive memory.

Two new index related functions were created:
ast_sounds_get_index_for_file() and ast_media_index_update_for_file()
which restrict index updating to specific sound files.

The original ast_sounds_get_index() and ast_media_index_update()
calls are still available but since they no longer cache the results
internally, developers should re-use an index they may already have
instead of calling ast_sounds_get_index() repeatedly.  If information
for only a single file is needed, ast_sounds_get_index_for_file()
should be called instead of ast_sounds_get_index().

The media_index directory scan code was elimininated in favor of
using the existing ast_file_read_dirs() function.

Since there's no more cache, ast_sounds_index_init now only
registers the sounds cli commands instead of generating the
initial index and subscribing to stasis format register/unregister
messages.

"sounds" is no longer a valid target for the "module reload"
command.

Both the sounds cli commands and the sounds ari resources were
refactored to only call ast_sounds_get_index() once per invocation
and to use ast_sounds_get_index_for_file() when a specific sound
file is requested.

Change-Id: I1cef327ba1b0648d85d218b70ce469ad07f4aa8d

19 months agoMerge "codecs.conf.sample: update codec opus docs"
George Joseph [Mon, 28 Jan 2019 13:46:51 +0000 (07:46 -0600)]
Merge "codecs.conf.sample: update codec opus docs"

19 months agoMerge "format_g726: add support for seeking"
George Joseph [Mon, 28 Jan 2019 13:46:17 +0000 (07:46 -0600)]
Merge "format_g726: add support for seeking"

19 months agoMerge "res_http_websocket: ensure control frames do not interfere with data"
George Joseph [Mon, 28 Jan 2019 13:22:01 +0000 (07:22 -0600)]
Merge "res_http_websocket: ensure control frames do not interfere with data"

20 months agocodecs.conf.sample: update codec opus docs
Kevin Harwell [Fri, 25 Jan 2019 18:27:41 +0000 (12:27 -0600)]
codecs.conf.sample: update codec opus docs

The option value "sdp" for some of the settings was removed a while back,
however the sample conf was not updated.

This patch removes any wording with regards to the old "sdp" option value,
and adjusts the defaults to what they are now.

ASTERISK-28263

Change-Id: I41bfa44e9f69446bcc5c8fd92e3675c676fdc445

20 months agoformat_g726: add support for seeking
eyalhasson [Tue, 22 Jan 2019 15:24:23 +0000 (17:24 +0200)]
format_g726: add support for seeking

Added support for the seek function in format_g726
so playback can start from anywhere.
Before the fix, playback of g726 files
always started from the beginning.

ASTERISK-28246

Change-Id: I626235bc4642df1479050d3d06828412603a9b40

20 months agoMerge "build : Fix cross-compilation errors"
Joshua C. Colp [Thu, 24 Jan 2019 14:23:53 +0000 (08:23 -0600)]
Merge "build : Fix cross-compilation errors"

20 months agoMerge "app_voicemail: Add Mailbox Aliases"
Joshua C. Colp [Thu, 24 Jan 2019 11:56:34 +0000 (05:56 -0600)]
Merge "app_voicemail:  Add Mailbox Aliases"

20 months agoMerge "res_pjsip_registrar: mitigate blocked threads on reliable transport shutdown"
Joshua C. Colp [Thu, 24 Jan 2019 11:52:57 +0000 (05:52 -0600)]
Merge "res_pjsip_registrar: mitigate blocked threads on reliable transport shutdown"

20 months agoMerge "Test_cel: Fails when DONT_OPTIMIZE is off"
Joshua C. Colp [Wed, 23 Jan 2019 17:26:34 +0000 (11:26 -0600)]
Merge "Test_cel: Fails when DONT_OPTIMIZE is off"

20 months agoMerge "manager_channels: Fix throwing of HangupHandler manager events"
Friendly Automation [Wed, 23 Jan 2019 15:46:00 +0000 (09:46 -0600)]
Merge "manager_channels: Fix throwing of HangupHandler manager events"

20 months agores_http_websocket: ensure control frames do not interfere with data
Jeremy Lainé [Wed, 23 Jan 2019 10:45:56 +0000 (11:45 +0100)]
res_http_websocket: ensure control frames do not interfere with data

Control frames (PING / PONG / CLOSE) can be received in the middle of a
fragmented message. In order to ensure they do not interfere with the
reassembly buffer, we exit early and do not return the payload to the
caller.

ASTERISK-28257 #close

Change-Id: Ia5367144fe08ac6141bba3309517a48ec7f013bc

20 months agobuild : Fix cross-compilation errors
Jean Aunis [Wed, 23 Jan 2019 13:59:00 +0000 (14:59 +0100)]
build : Fix cross-compilation errors

Bundled pjproject and jansson must be configured with the host and build
parameters provided to the configure script.
Autotools do not permit to check for the existence of local header files, so
the control of hrirs.h must not be done when cross-compiling.

ASTERISK-28250

Change-Id: If0a76e52a87d4ab82b7d4c72d27d8759ca931880

20 months agoMerge "stasis / manager / ari: Better filter messages."
Joshua C. Colp [Wed, 23 Jan 2019 00:58:48 +0000 (18:58 -0600)]
Merge "stasis / manager / ari: Better filter messages."

20 months agoMerge "bridge_softmix: Use MSID:LABEL metadata as the cloned stream's appendix"
Joshua C. Colp [Wed, 23 Jan 2019 00:55:42 +0000 (18:55 -0600)]
Merge "bridge_softmix: Use MSID:LABEL metadata as the cloned stream's appendix"

20 months agoMerge "pjsip_transport_management: Shutdown transport immediately on disconnect"
Joshua C. Colp [Wed, 23 Jan 2019 00:55:21 +0000 (18:55 -0600)]
Merge "pjsip_transport_management: Shutdown transport immediately on disconnect"

20 months agoMerge "res_http_websocket: respond to CLOSE opcode"
Joshua C. Colp [Wed, 23 Jan 2019 00:15:16 +0000 (18:15 -0600)]
Merge "res_http_websocket: respond to CLOSE opcode"

20 months agomanager_channels: Fix throwing of HangupHandler manager events
Gerald Schnabel [Tue, 22 Jan 2019 21:03:22 +0000 (22:03 +0100)]
manager_channels: Fix throwing of HangupHandler manager events

The type value extracted from stasis message data in channel_hangup_handler_cb
isn't compared against the valid values "run", "pop" and "push". Thus the
manager events HangupHandlerPush, HangupHandlerPop and HangupHandlerRun are
never thrown.

This regression was introduced by ASTERISK_21462.

ASTERISK-28252

Change-Id: I9956e35e18da1873113644df1ddc3c7cd37bf524

20 months agoTest_cel: Fails when DONT_OPTIMIZE is off
Chris-Savinovich [Sat, 19 Jan 2019 21:55:20 +0000 (15:55 -0600)]
Test_cel: Fails when DONT_OPTIMIZE is off

A bug in GCC causes TEST_CEL to return failure under the following
conditions:
1. TEST_FRAMEWORK on
2. DONT_OPTIMIZE off
3. Fedora and Ubuntu
4. GCC 8.2.1
5. Test name: test_cel_dial_pickup
6. There must exist a certain combination of multithreading.
The bug affects arithmetic calculations when the optimization level
is bigger than O1 and the -fpartial-inline flag is on. Provided these
conditions, function ast_str_to_lower() fails to convert to lower case
due to said function being of type force_inline.  The solution is to
remove the "force_inline" type declaration from function ast_str_to_lower()

Change-Id: Ied32e0071f12ed9d5f3b4cdd878b2532a1c769d7

20 months agoapp_voicemail: Add Mailbox Aliases
George Joseph [Mon, 10 Dec 2018 13:20:06 +0000 (06:20 -0700)]
app_voicemail:  Add Mailbox Aliases

You can now define an "aliases" context in voicemail.conf
whose entries point to actual mailboxes.  These can be used anywhere
the mailbox is specified.

Example:
[general]
aliasescontext = myaliases

[default]
1234 = yadayada

[myaliases]
4321@devices = 1234@default

Now you can use 4321@devices to refer to the 1234@default mailbox.

This can be useful to provide channel drivers with constant
mailbox specifications such as <extension>@devices leaving
app_voicemail to control exactly which mailbox the alias points to.
Now, only voicemail has to be reloaded to make changes instead of
individual channel drivers which are usually more expensive to
reload.

Change-Id: I395b9205c91523a334fe971be0d1de4522067b04

20 months agores_pjsip_registrar: mitigate blocked threads on reliable transport shutdown
Kevin Harwell [Tue, 22 Jan 2019 18:07:04 +0000 (12:07 -0600)]
res_pjsip_registrar: mitigate blocked threads on reliable transport shutdown

When a reliable transport is shutdown it's possible for the pjsip registrar
resource shutdown handler to get called multiple times. If this happens and one
of the threads is taking "too long" (slow database call for instance) then the
others get blocked waiting to delete.

Since it only takes one to delete the contact then the other threads should be
able to continue on if one of the threads is currently "deleting". This patch
makes it so now when a thread enters the shutdown handler it checks to see if a
thread is currently already "deleting". If so, then the thread does not attempt
to get the lock, and instead continues on thus avoiding the blockage.

ASTERISK-28213 #close

Change-Id: I7563ca596312b1dff4f3ab41483e89fe2862328a

20 months agopjproject_bundled: Add patch for double free issue in timer heap
George Joseph [Tue, 22 Jan 2019 15:02:37 +0000 (08:02 -0700)]
pjproject_bundled:  Add patch for double free issue in timer heap

Fixed #2172: Avoid double reference counter decrements in
timer in the scenario of race condition between
pj_timer_heap_cancel() and pj_timer_heap_poll().

Change-Id: If000e9438c83ac5084b678eb811e902c035bd2d8

20 months agobridge_softmix: Use MSID:LABEL metadata as the cloned stream's appendix
Xiemin Chen [Sun, 16 Dec 2018 12:43:42 +0000 (20:43 +0800)]
bridge_softmix: Use MSID:LABEL metadata as the cloned stream's appendix

To avoid the stream name collide if there're more than one video track
in one client. If client has multi video tracks, the name of ast_stream
which represents each video track may be the same. Use the MSID:LABEL
here because it's identifiable.

ASTERISK-28196 #close
Reported-by: xiemchen

Change-Id: Ib62b2886e8d3a30e481d94616b0ceaeab68a870b

20 months agoMerge "channel.c: Fix segfault with Monitor(wav,file,i)"
Joshua C. Colp [Mon, 21 Jan 2019 19:18:20 +0000 (13:18 -0600)]
Merge "channel.c: Fix segfault with Monitor(wav,file,i)"

20 months agores_http_websocket: respond to CLOSE opcode
Jeremy Lainé [Tue, 8 Jan 2019 07:38:41 +0000 (08:38 +0100)]
res_http_websocket: respond to CLOSE opcode

This ensures that Asterisk responds properly to frames received from a
client with opcode 8 (CLOSE) by echoing back the status code in its own
CLOSE frame.

Handling of the CLOSE opcode is moved up with the rest of the opcodes so
that unmasking gets applied. The payload is no longer returned to the
caller, but neither ARI nor the chan_sip nor pjsip made use of the
payload, which is a good thing since it was masked.

ASTERISK-28231 #close

Change-Id: Icb1b60205fc77ee970ddc91d1f545671781344cf

20 months agopjsip_transport_management: Shutdown transport immediately on disconnect
Sean Bright [Fri, 18 Jan 2019 22:11:18 +0000 (17:11 -0500)]
pjsip_transport_management: Shutdown transport immediately on disconnect

The transport management code that checks for idle connections keeps a
reference to PJSIP's transport for IDLE_TIMEOUT milliseconds (32000 by
default). Because of this, if the transport is closed before this
timeout, the idle checking code will keep the transport from actually
being shutdown until the timeout expires.

Rather than passing the AO2 object to the scheduler task, we just pass
its key and look it up when it is time to potentially close the idle
connection. The other transport management code handles cleaning up
everything else for us.

Additionally, because we use the address of the transport when
generating its name, we concatenate an incrementing ID to the end of the
name to guarantee uniqueness.

Related to ASTERISK~28231

Change-Id: I02ee9f4073b6abca9169d30c47aa69b5e8ae9afb

20 months agochannel.c: Fix segfault with Monitor(wav,file,i)
Valentin Vidic [Sun, 20 Jan 2019 18:15:51 +0000 (19:15 +0100)]
channel.c: Fix segfault with Monitor(wav,file,i)

If the Monitor is started with the i option the read_stream will be
NULL. One code path in channel.c checks if write_stream is set but than
uses read_stream instead causing a segfault.

ASTERISK-28249

Change-Id: I1bae9126537be54895c7fea2d08dd9488d8cc525

20 months agostasis / manager / ari: Better filter messages.
Joshua C. Colp [Thu, 10 Jan 2019 19:34:32 +0000 (15:34 -0400)]
stasis / manager / ari: Better filter messages.

Previously both AMI and ARI used a default route on
their stasis message router to handle some of the
messages for publishing out their respective
connection. This caused messages to be given to
their subscription that could not be formatted
into AMI or JSON.

This change adds an API call to the stasis message
router which allows a default route to be set as well
as formatters that the default route is expecting.
This allows both AMI and ARI to specify that their
default route only wants messages of their given
formatter. By doing so stasis can more intelligently
filter at publishing time so that they do not receive
messages which will not be turned into AMI or JSON.

ASTERISK-28244

Change-Id: I65272819a53ce99f869181d1d370da559a7d1703

20 months agosched: Make sched_settime() return void because it cannot fail
Sean Bright [Thu, 17 Jan 2019 15:56:35 +0000 (10:56 -0500)]
sched: Make sched_settime() return void because it cannot fail

Change-Id: I66b8b2b2778f186919d73ae9bf592104b8fb1cd5

20 months agores_pjsip_transport_websocket: Don't assert on 0 length payloads
Sean Bright [Fri, 4 Jan 2019 23:14:45 +0000 (18:14 -0500)]
res_pjsip_transport_websocket: Don't assert on 0 length payloads

When --enable-dev-mode is used, pjsip_tpmgr_receive_packet() will assert
if passed a payload length of 0, so treat empty frames as if we didn't
receive them.

Change-Id: I9c5fdccd89cc8d2f3ed7e3ee405ef0fc78178f48

20 months agoMerge "res_pjsip: add option to enable ContactStatus event when contact is updated"
Joshua C. Colp [Mon, 14 Jan 2019 14:38:14 +0000 (08:38 -0600)]
Merge "res_pjsip: add option to enable ContactStatus event when contact is updated"

20 months agoMerge "stasis/endpoint: Fix memory leak of channel_ids in ast_endpoint structure."
Joshua C. Colp [Mon, 14 Jan 2019 14:26:32 +0000 (08:26 -0600)]
Merge "stasis/endpoint: Fix memory leak of channel_ids in ast_endpoint structure."

20 months agoMerge "res_pjsip_sdp_rtp: Only enable abs-send-time when WebRTC is enabled."
Joshua C. Colp [Mon, 14 Jan 2019 14:03:27 +0000 (08:03 -0600)]
Merge "res_pjsip_sdp_rtp: Only enable abs-send-time when WebRTC is enabled."

20 months agoMerge "RTP: reset DTMF last seqno/timestamp on RTP renegotiation"
Joshua C. Colp [Mon, 14 Jan 2019 14:03:03 +0000 (08:03 -0600)]
Merge "RTP: reset DTMF last seqno/timestamp on RTP renegotiation"

20 months agoMerge "app_voicemail: Fix Channel variable VM_MESSAGEFILE for "urgent" voicemail"
Joshua C. Colp [Mon, 14 Jan 2019 12:19:45 +0000 (06:19 -0600)]
Merge "app_voicemail: Fix Channel variable VM_MESSAGEFILE for "urgent" voicemail"

20 months agostasis/endpoint: Fix memory leak of channel_ids in ast_endpoint structure.
mohitdhiman [Sat, 12 Jan 2019 08:29:12 +0000 (13:59 +0530)]
stasis/endpoint: Fix memory leak of channel_ids in ast_endpoint structure.

During Bridging of two channels if masquerade operation is performed on a
channel (clone channel) which was created with endpoint details
(ast_channel_alloc_with_endpoint()) and the original channel which is created
without endpoint details (ast_channel_alloc()) then both the channels must
exchange their endpoint details or else after masquerade when clone channel
is being destroyed the endpoint cleanup callbacks will be destroyed too and
after call completion unique_id of original channel will still be there in
ast_endpoint structure's channel_ids container.

ASTERISK-28197

Change-Id: I97ce73da390af20fd082fb09d722a6fe9cb2f39d

20 months agores_pjsip: add option to enable ContactStatus event when contact is updated
Alexei Gradinari [Fri, 11 Jan 2019 15:48:36 +0000 (10:48 -0500)]
res_pjsip: add option to enable ContactStatus event when contact is updated

The commit I2f97ebfa79969a36a97bb7b9afd5b6268cf1a07d removed sending out
the ContactStatus AMI event when a contact is updated.
Thist change broke things which rely on old behavior.

This patch adds a new PJSIP global configuration option
'send_contact_status_on_update_registration' to be able to preserve old
ContactStatus behavior.
By default new behavior, i.e. the ContactStatus event will not be sent when a
device refreshes its registration.

Change-Id: I706adf7584e7077eb6bde6d9799ca408bc82ce46

20 months agores_pjsip_sdp_rtp: Only enable abs-send-time when WebRTC is enabled.
Joshua Colp [Mon, 7 Jan 2019 14:06:37 +0000 (14:06 +0000)]
res_pjsip_sdp_rtp: Only enable abs-send-time when WebRTC is enabled.

For video streams it was possible for the abs-send-time information
to be placed into RTP streams even if not negotiated. Depending on
the endpoint in use this could cause video to not flow.

We now only enable abs-send-time for negotiation if WebRTC is enabled.

ASTERISK-28230

Change-Id: I0eb682302f8da3a4ea3c42e839208d55f825ed0c

20 months agoRAII: Change order or variables in clang version
Diederik de Groot [Sat, 5 Jan 2019 17:14:26 +0000 (18:14 +0100)]
RAII: Change order or variables in clang version

This prevents use-after-scope issues when unwinding the stack,
which happens in reverse order. The varname variable needs to
remain alive for the destruction to be able to access it.
Issue was found using clang + address-sanitizer.

ASTERISK-28232 #close

Change-Id: I00811c34ae910836a5fb6d22304528aef92624db

20 months agoRTP: reset DTMF last seqno/timestamp on RTP renegotiation
Alexei Gradinari [Fri, 4 Jan 2019 15:57:06 +0000 (10:57 -0500)]
RTP: reset DTMF last seqno/timestamp on RTP renegotiation

The remote side may start a new stream when renegotiating RTP.
Need to reset the DTMF last sequence number and the timestamp
of the last END packet on RTP renegotiation.

If the new time stamp is lower then the timestamp of the last DTMF END packet
the asterisk drops all DTMF frames as out of order.

This bug was caught using Cisco ip-phone SPA5XX and codec g722.
On SIP session update the SPA50X resets stream and a new timestamp is twice
smaller then the previous.

ASTERISK-28162 #close

Change-Id: Ic72b4497e74d801b27a635559c1cf29c16c95254

20 months agoMerge "ast_coredumper: Refactor the pid determination process"
Joshua C. Colp [Fri, 4 Jan 2019 14:27:04 +0000 (08:27 -0600)]
Merge "ast_coredumper:  Refactor the pid determination process"

20 months agoMerge "stasis: Fix ABI between DEVMODE and non-DEVMODE."
Friendly Automation [Thu, 3 Jan 2019 23:39:22 +0000 (17:39 -0600)]
Merge "stasis: Fix ABI between DEVMODE and non-DEVMODE."

20 months agoMerge "stasic.c: Fix printf format type mismatches with arguments."
Friendly Automation [Thu, 3 Jan 2019 11:38:16 +0000 (05:38 -0600)]
Merge "stasic.c: Fix printf format type mismatches with arguments."

20 months agoapp_voicemail: Fix Channel variable VM_MESSAGEFILE for "urgent" voicemail
Bryan Boatright [Wed, 2 Jan 2019 17:44:41 +0000 (11:44 -0600)]
app_voicemail: Fix Channel variable VM_MESSAGEFILE for "urgent" voicemail

If a voicemail is marked "urgent" then the VM_MESSAGEFILE channel variable is
not updated correctly since urgent messages are in a different directory. The
fix is to update the channel variable when the path to the urgent message is
created.

ASTERISK-28225

Change-Id: I8efbace06e6122ea0793f7bdb073d4378e8274ca

20 months agoapp_queue: Fix crash when using 'b' option on non-ringall queue.
Joshua Colp [Wed, 2 Jan 2019 17:33:58 +0000 (17:33 +0000)]
app_queue: Fix crash when using 'b' option on non-ringall queue.

When using the 'b' option to Queue with a queue that was not configured
for ring all a crash would occur as the wrong pointer would be used.

ASTERISK-28218

Change-Id: If1390f64e321047dff24fd2410c95dde74904980

20 months agostasic.c: Fix printf format type mismatches with arguments.
Richard Mudgett [Wed, 19 Dec 2018 19:02:35 +0000 (13:02 -0600)]
stasic.c: Fix printf format type mismatches with arguments.

An int64_t is not likely the same size as a long.

* Changed the int64_t values in the statistics structs to longs so casting
is not necessary when generating the formatted CLI output.  The offending
members did not need to be int64_t anyway as they were only set by an int
type variable which was already truncating bits.

* Reordered the statistics structs to reduce potential padding bytes.

Change-Id: Ic090a070e9dc4ca650ebdb9c01ed50a581289962

20 months agoMerge "backtrace.c: Fix casting pointer to/from integral type."
George Joseph [Wed, 2 Jan 2019 15:51:36 +0000 (09:51 -0600)]
Merge "backtrace.c: Fix casting pointer to/from integral type."

21 months agostasis: Fix ABI between DEVMODE and non-DEVMODE.
Corey Farrell [Wed, 26 Dec 2018 17:49:57 +0000 (12:49 -0500)]
stasis: Fix ABI between DEVMODE and non-DEVMODE.

Eliminate differences with DEVMODE prototypes for public functions.

ASTERISK-28212 #close

Change-Id: I872c04842ab6b61e9dd6d37e4166bc619aa20626

21 months agoRevert "stasis_cache: Stop caching stasis subscription change messages"
George Joseph [Wed, 26 Dec 2018 16:26:36 +0000 (11:26 -0500)]
Revert "stasis_cache:  Stop caching stasis subscription change messages"

This reverts commit 5ec6d2c33e3b02755e0b2ea3fc94f048af5c741f.

This commit caused issues with polling when combined with
the revert commit "Revert "app_voicemail: Remove need to subscribe to stasis"

ASTERISK-28222
Reported by: abelbeck

Change-Id: I1e83a433e4202574181bc128dce876ef24936a52

21 months agoast_coredumper: Refactor the pid determination process
George Joseph [Mon, 24 Dec 2018 17:42:36 +0000 (10:42 -0700)]
ast_coredumper:  Refactor the pid determination process

In order to get a dump of the running process, we need to find the
pid of the main asterisk process.  This can be tricky if there are
also instances of "asterisk -r" running or if an alternate location
for asterisk.conf was specified on the command line with the -C
option that also specified an alternation location for the pid file.

So now...

1. We find the asterisk executable with "which" or the --asterisk-bin
   command line option.
2. If there's only 1 process with an executable path that matches,
   we use that pid.  If not...
3. We try "<asterisk-bin> -rx 'core show settings'" and parse the
   output to find the pidfile, then read that for the pid.  If that
   didn't work...
4. We get a list of all the pids matching <asterisk-bin> and look
   in /proc/<pid>/cmdline for a -C argument and retry the "core show
   settings" using the same -C option.  We can't parse the output
   of "ps" to get the -C path because it may contain spaces.  The
   contents of /proc/<pid>/cmdline are delimited by NULLs.  For BSDs
   we may have to mount /proc first. :(

ASTERISK-28221
Reported by: Andrew Nagy

Change-Id: I8aa1f3f912f949df2b5348908803c636bde1d57c

21 months agobacktrace.c: Fix casting pointer to/from integral type.
Richard Mudgett [Wed, 19 Dec 2018 18:39:08 +0000 (12:39 -0600)]
backtrace.c: Fix casting pointer to/from integral type.

The backtrace library bfd.h include file does not get the sizes of
pointers and ints right on some platforms.  On my old test box the size
of bfd_vma is 8 while the size of a pointer is 4.  gcc on the box
complains of the integer casting to/from pointers size mismatch.

* uintptr_t to the rescue by doing an appropriate two stage cast.

Change-Id: Icb2621583f50c8728de08a3c824d95fe53cc45d0

21 months agoMerge "res/res_ari: Add additional hangup reasons"
Friendly Automation [Wed, 19 Dec 2018 11:12:15 +0000 (05:12 -0600)]
Merge "res/res_ari: Add additional hangup reasons"

21 months agoMerge "app_voicemail: Don't delete mailbox state unless mailbox is deleted"
Friendly Automation [Wed, 19 Dec 2018 11:08:00 +0000 (05:08 -0600)]
Merge "app_voicemail:  Don't delete mailbox state unless mailbox is deleted"

21 months agoMerge "res_pjsip: Patch for res_pjsip_* module load/reload crash"
George Joseph [Tue, 18 Dec 2018 16:42:49 +0000 (10:42 -0600)]
Merge "res_pjsip: Patch for res_pjsip_* module load/reload crash"

21 months agoMerge "res_rtp_asterisk: Remove some unused structure fields."
George Joseph [Tue, 18 Dec 2018 16:42:26 +0000 (10:42 -0600)]
Merge "res_rtp_asterisk: Remove some unused structure fields."

21 months agoapp_voicemail: Don't delete mailbox state unless mailbox is deleted
George Joseph [Tue, 18 Dec 2018 16:33:50 +0000 (09:33 -0700)]
app_voicemail:  Don't delete mailbox state unless mailbox is deleted

The free_user function was automatically deleting the stasis mailbox
state but this only makes sense when the mailbox is actually
deleted, not just the structure freed.  This was causing issues
where leave_voicemail would publish the mwi message to stasis and
delete the state before the message could be processed by
res_pjsip_mwi.

* Removed the delete of state from free_user().

* Created a new free_user_final() function that both frees the data
  structure and deletes the state.  This function is only called
  during module load/unload where it's appropriate to delete the
  state.

ASTERISK-28215

Change-Id: I305e8b3c930e9ac41d901e5dc8a58fd7904d98dd

21 months agoMerge "res_format_attr_h264.c: Make sure profile-level-id fmtp attribute is set"
Joshua C. Colp [Mon, 17 Dec 2018 15:34:47 +0000 (09:34 -0600)]
Merge "res_format_attr_h264.c: Make sure profile-level-id fmtp attribute is set"

21 months agores_rtp_asterisk: Remove some unused structure fields.
Sean Bright [Fri, 14 Dec 2018 17:52:45 +0000 (12:52 -0500)]
res_rtp_asterisk: Remove some unused structure fields.

All of the fields that were removed were no longer referenced except for
'lastrxts' and 'rxseqno' which were only ever written to.

Change-Id: I5a5d31eb33e97663843698f58d0d97f22a76627c

21 months agoMerge "bridge_builtin_features.c: Set auto(mix)mon variables on both channels"
Joshua C. Colp [Fri, 14 Dec 2018 14:37:38 +0000 (08:37 -0600)]
Merge "bridge_builtin_features.c: Set auto(mix)mon variables on both channels"

21 months agores_format_attr_h264.c: Make sure profile-level-id fmtp attribute is set
Sean Bright [Thu, 13 Dec 2018 21:56:50 +0000 (16:56 -0500)]
res_format_attr_h264.c: Make sure profile-level-id fmtp attribute is set

The profile-iop octet (the 2nd) of profile-level-id can be zero
according to RFC 6184 Section 8.1. So we ignore its value when deciding
to include profile-level-id in the outgoing SDP.

ASTERISK-27959 #close
Reported by: David Kuehling

Change-Id: Id28cd916a3d7748058fe9609b585d07d9e243f73

21 months agoMerge "confbridge: announce to the marked users when they join an empty conference"
Joshua C. Colp [Thu, 13 Dec 2018 14:00:06 +0000 (08:00 -0600)]
Merge "confbridge: announce to the marked users when they join an empty conference"

21 months agobridge_builtin_features.c: Set auto(mix)mon variables on both channels
Sean Bright [Tue, 11 Dec 2018 20:49:03 +0000 (15:49 -0500)]
bridge_builtin_features.c: Set auto(mix)mon variables on both channels

This is how features behaved up through Asterisk 11, but was changed
when the new bridging framework was implemented in Asterisk 12.

Reported by rrittgarn in #asterisk.

Change-Id: I72cf86223947a8118c75f46e2c603dbc11e3125b

21 months agoMerge "utils: Don't set or clear flags that don't need setting or clearing"
Joshua C. Colp [Wed, 12 Dec 2018 19:12:19 +0000 (13:12 -0600)]
Merge "utils: Don't set or clear flags that don't need setting or clearing"

21 months agoMerge "stasis: Add statistics gathering in developer mode."
Friendly Automation [Wed, 12 Dec 2018 19:08:23 +0000 (13:08 -0600)]
Merge "stasis: Add statistics gathering in developer mode."

21 months agoMerge "Use non-blocking socket() and pipe() wrappers"
Joshua C. Colp [Wed, 12 Dec 2018 17:31:00 +0000 (11:31 -0600)]
Merge "Use non-blocking socket() and pipe() wrappers"

21 months agoconfbridge: announce to the marked users when they join an empty conference
Alexei Gradinari [Fri, 7 Dec 2018 20:22:29 +0000 (15:22 -0500)]
confbridge: announce to the marked users when they join an empty conference

Currently the file sound_only_person is not played when a marked
user (with announce_only_user=yes) joins an empty conference.

This patch fixes it.

ASTERISK-28201 #close

Change-Id: I85b67687e6b220939c3af8091d83a70a7b174cf4

21 months agostasis: Add statistics gathering in developer mode.
Joshua C. Colp [Fri, 30 Nov 2018 11:40:40 +0000 (07:40 -0400)]
stasis: Add statistics gathering in developer mode.

This change adds statistics gathering to Stasis topics,
subscriptions, and message types. These can be viewed using
CLI commands and provide insight into how Stasis is used
and how long certain operations take to execute.

These are only available when Asterisk is compiled in
developer mode and do not have any impact under normal
operation.

ASTERISK-28117

Change-Id: I94411b53767f89ee01714daaecf0c2f1666e863f

21 months agoMerge "stasis: Allow filtering by formatter"
Friendly Automation [Wed, 12 Dec 2018 17:09:19 +0000 (11:09 -0600)]
Merge "stasis:  Allow filtering by formatter"

21 months agoMerge "build: Update config.guess and config.sub"
Joshua C. Colp [Wed, 12 Dec 2018 17:05:30 +0000 (11:05 -0600)]
Merge "build: Update config.guess and config.sub"

21 months agoMerge "pjproject_bundled: check whether UPDATE is supported on outgoing calls"
George Joseph [Wed, 12 Dec 2018 16:51:57 +0000 (10:51 -0600)]
Merge "pjproject_bundled: check whether UPDATE is supported on outgoing calls"

21 months agoMerge "Revert "RTP: reset DTMF last seqno/timestamp on voice packet with marker bit""
George Joseph [Tue, 11 Dec 2018 20:18:25 +0000 (14:18 -0600)]
Merge "Revert "RTP: reset DTMF last seqno/timestamp on voice packet with marker bit""

21 months agoUse non-blocking socket() and pipe() wrappers
Sean Bright [Tue, 11 Dec 2018 14:54:43 +0000 (09:54 -0500)]
Use non-blocking socket() and pipe() wrappers

Change-Id: I050ceffe5a133d5add2dab46687209813d58f597

21 months agoutils: Don't set or clear flags that don't need setting or clearing
Sean Bright [Tue, 11 Dec 2018 15:06:15 +0000 (10:06 -0500)]
utils: Don't set or clear flags that don't need setting or clearing

Change-Id: I0e7fb507ac09b15e45e1ff8501ecfca67afa5217

21 months agoMerge "CI: Various updates to buildAsterisk.sh"
George Joseph [Tue, 11 Dec 2018 15:07:59 +0000 (09:07 -0600)]
Merge "CI: Various updates to buildAsterisk.sh"

21 months agoMerge "utils: Wrap socket() and pipe() to reduce syscalls"
Joshua C. Colp [Tue, 11 Dec 2018 15:01:38 +0000 (09:01 -0600)]
Merge "utils: Wrap socket() and pipe() to reduce syscalls"

21 months agobuild: Update config.guess and config.sub
Sean Bright [Tue, 11 Dec 2018 12:55:16 +0000 (07:55 -0500)]
build: Update config.guess and config.sub

Pulled from the authoritative respository at:

  https://git.savannah.gnu.org/cgit/config.git/tree/

Change-Id: I748708ce24d4d47ff1f395075d0b08d3da3355e0

21 months agoRevert "RTP: reset DTMF last seqno/timestamp on voice packet with marker bit"
George Joseph [Tue, 11 Dec 2018 14:28:48 +0000 (09:28 -0500)]
Revert "RTP: reset DTMF last seqno/timestamp on voice packet with marker bit"

This reverts commit 3f53041267234b21aedd522c1197ec57cca90845.

Pending resolution of ASTERISK_28200

Change-Id: Iad4f3614cac95b00fdbb2b799aab8ae6285ec988

21 months agores/res_ari: Add additional hangup reasons
Sebastian Damm [Thu, 6 Dec 2018 17:23:50 +0000 (18:23 +0100)]
res/res_ari: Add additional hangup reasons

The ARI DELETE /channels command takes a "reason" parameter
Previously, there were only five reasons implemented
This patch adds more reasons to choose from for more
complex setups

ASTERISK-28198 #close

Change-Id: I85996f1076c9946d65c778413f040a845a90fecc

21 months agoMerge "chan_sip: Fix leak using contact ACL"
Joshua C. Colp [Mon, 10 Dec 2018 13:05:21 +0000 (07:05 -0600)]
Merge "chan_sip: Fix leak using contact ACL"

21 months agoutils: Wrap socket() and pipe() to reduce syscalls
Sean Bright [Fri, 7 Dec 2018 12:57:48 +0000 (07:57 -0500)]
utils: Wrap socket() and pipe() to reduce syscalls

Some platforms provide an implementation of socket() and pipe2() that allow the
caller to specify that the resulting file descriptors should be non-blocking.

Using these allows us to potentially elide 3 calls into 1 by avoiding extraneous
calls to fcntl() to set the O_NONBLOCK flag afterwards.

In passing, change ast_alertpipe_init() to use pipe2() directly instead of the
wrapper if it is available.

Change-Id: I3ebe654fb549587537161506c6c950f4ab298bb0

21 months agostasis: Allow filtering by formatter
George Joseph [Thu, 29 Nov 2018 15:53:51 +0000 (08:53 -0700)]
stasis:  Allow filtering by formatter

A subscriber can now indicate that it only wants messages
that have formatters of a specific type.  For instance,
manager can indicate that it only wants messages that have a
"to_ami" formatter.  You can combine this with the existing
filter for message type to get only messages with specific
formatters or messages of specific types.

ASTERISK-28186

Change-Id: Ifdb7a222a73b6b56c6bb9e4ee93dc8a394a5494c

21 months agoRemoving registrar_expire from basic-pbx config
David M. Lee [Wed, 5 Dec 2018 21:28:03 +0000 (15:28 -0600)]
Removing registrar_expire from basic-pbx config

The module has been removed, so it shouldn't be in the default config any more.

Change-Id: Ie7e09f00f9c9a885574e29478250de4c2cefd9f1