asterisk/asterisk.git
2 years agoUpdate AMI and ARI versions for master/15 and update UPDATE.txt
George Joseph [Thu, 20 Jul 2017 15:52:38 +0000 (09:52 -0600)]
Update AMI and ARI versions for master/15 and update UPDATE.txt

AMI goes from 3.2.0 to 4.0.0
ARI goes from 2.0.0 to 3.0.0

Copied UPGRADE.txt -> UPGRADE-15.txt
Created new UPGRADE.txt
Removed a log file that was accidentally checked in a while ago

Change-Id: I1c794f910038459b13e16f9c3a12c44e56f142f7

2 years agoMerge "core: Add digit filtering to ast_waitfordigit_full"
Joshua Colp [Wed, 19 Jul 2017 18:09:56 +0000 (13:09 -0500)]
Merge "core: Add digit filtering to ast_waitfordigit_full"

2 years agoMerge "app_playback.c: Use the timezonename parameter"
George Joseph [Wed, 19 Jul 2017 17:11:09 +0000 (12:11 -0500)]
Merge "app_playback.c: Use the timezonename parameter"

2 years agoMerge "bridge_softmix: Use removed stream spots when renegotiating."
Jenkins2 [Wed, 19 Jul 2017 15:42:51 +0000 (10:42 -0500)]
Merge "bridge_softmix: Use removed stream spots when renegotiating."

2 years agoMerge "core: Add PARSE_TIMELEN support to ast_parse_arg and ACO."
Jenkins2 [Wed, 19 Jul 2017 14:25:59 +0000 (09:25 -0500)]
Merge "core: Add PARSE_TIMELEN support to ast_parse_arg and ACO."

2 years agoMerge "app_queue: Add change priority of call"
George Joseph [Tue, 18 Jul 2017 14:37:36 +0000 (09:37 -0500)]
Merge "app_queue: Add change priority of call"

2 years agoMerge "bridge_softmix: Don't reorder streams on participant leaving."
Jenkins2 [Tue, 18 Jul 2017 13:13:15 +0000 (08:13 -0500)]
Merge "bridge_softmix: Don't reorder streams on participant leaving."

2 years agoMerge "bridge/core_unreal: Fix SFU bugs with forwarding frames."
Jenkins2 [Mon, 17 Jul 2017 22:59:32 +0000 (17:59 -0500)]
Merge "bridge/core_unreal: Fix SFU bugs with forwarding frames."

2 years agoMerge "res_pjsip: Add "webrtc" configuration option"
Jenkins2 [Mon, 17 Jul 2017 20:16:30 +0000 (15:16 -0500)]
Merge "res_pjsip: Add "webrtc" configuration option"

2 years agoMerge "res_rtp_asterisk: Use RTP component for ICE if RTCP-MUX is in use."
Jenkins2 [Mon, 17 Jul 2017 19:54:22 +0000 (14:54 -0500)]
Merge "res_rtp_asterisk: Use RTP component for ICE if RTCP-MUX is in use."

2 years agobridge_softmix: Don't reorder streams on participant leaving.
Joshua Colp [Mon, 17 Jul 2017 12:19:59 +0000 (12:19 +0000)]
bridge_softmix: Don't reorder streams on participant leaving.

When a participant leaves a bridge while operating in SFU mode
their respective stream on every other participant needs to be
removed. Leaving the stream out of the new topology results in
every stream after it being moved and reordered. This causes
problems with clients. Instead simply mark the stream as removed
which leaves it in place in the SDP and doesn't reorder or touch
any other streams.

ASTERISK-27136

Change-Id: I4b3f840adcdf69b83842b0d8a737665ba0ef9cb1

2 years agoMerge "app_confbridge: Make sure name recordings are always removed from the filesystem"
Jenkins2 [Mon, 17 Jul 2017 14:35:08 +0000 (09:35 -0500)]
Merge "app_confbridge: Make sure name recordings are always removed from the filesystem"

2 years agoMerge "chan_iax2: On reload make sure to check for existing MWI subscription"
George Joseph [Mon, 17 Jul 2017 14:03:14 +0000 (09:03 -0500)]
Merge "chan_iax2: On reload make sure to check for existing MWI subscription"

2 years agoMerge "res/res_stasis_snoop: generate silence when audiohook returns null"
Jenkins2 [Mon, 17 Jul 2017 13:25:29 +0000 (08:25 -0500)]
Merge "res/res_stasis_snoop: generate silence when audiohook returns null"

2 years agobridge_softmix: Use removed stream spots when renegotiating.
Joshua Colp [Sun, 16 Jul 2017 17:31:35 +0000 (17:31 +0000)]
bridge_softmix: Use removed stream spots when renegotiating.

Streams are never truly removed in SDP, they still occupy
a location within the SDP. This location can be reused by
another stream if it so chooses.

This change takes advantage of this such that if a new stream
is needing to be added for a new participant any removed streams
are instead replaced first. This reduces the size of the SDP
and the number of streams.

ASTERISK-27134

Change-Id: I95cdcfd55cf47e02ea52abb5d94008db3fb68b1d

2 years agores_rtp_asterisk: Use RTP component for ICE if RTCP-MUX is in use.
Joshua Colp [Sun, 16 Jul 2017 17:18:39 +0000 (17:18 +0000)]
res_rtp_asterisk: Use RTP component for ICE if RTCP-MUX is in use.

This change makes it so that if an RTCP packet is being sent
the RTP ICE component is used for sending if RTCP-MUX is in use.

ASTERISK-27133

Change-Id: I6200f611ede709602ee9b89501720c29545ed68b

2 years agoMerge "Sounds: Update for core sounds 1.6 release"
Jenkins2 [Fri, 14 Jul 2017 15:56:17 +0000 (10:56 -0500)]
Merge "Sounds: Update for core sounds 1.6 release"

2 years agoapp_confbridge: Make sure name recordings are always removed from the filesystem
Sergej Kasumovic [Fri, 14 Jul 2017 06:25:36 +0000 (08:25 +0200)]
app_confbridge: Make sure name recordings are always removed from the filesystem

This commit fixes two possible scenarios:

* When recording name and if during recording you hangup, file is never
removed. This is due to the fact file location is nulled.
* When recording name and if you hangup during thank-you prompt, file
is never removed.

ASTERISK-27123 #close

Change-Id: I39b7271408b4b54ce880c5111a886aa8f28c2625

2 years agoMerge "res/res_pjsip_t38 ensure t38 requests get rejected quickly"
George Joseph [Fri, 14 Jul 2017 12:44:20 +0000 (07:44 -0500)]
Merge "res/res_pjsip_t38  ensure t38 requests get rejected quickly"

2 years agochan_iax2: On reload make sure to check for existing MWI subscription
Sergej Kasumovic [Fri, 14 Jul 2017 06:11:50 +0000 (08:11 +0200)]
chan_iax2: On reload make sure to check for existing MWI subscription

On every reload of chan_iax2 module, MWI subscription was added, which
results in additional taskprocessors being accumulated over time.

This commit fixes it by making sure we check for existing subscription
first.

This was verified with 'core show taskprocessors' CLI command.

ASTERISK-27122 #close

Change-Id: Ie2ef528fd5ca01b933eeb88188cc10967899cfb9

2 years agores_pjsip: Add "webrtc" configuration option
Kevin Harwell [Mon, 10 Jul 2017 23:17:44 +0000 (18:17 -0500)]
res_pjsip: Add "webrtc" configuration option

This patch creates a new configuration option called "webrtc". When enabled it
defaults and enables the following options that are needed in order for webrtc
to work in Asterisk:

  rtcp-mux, use_avpf, ice_support, and use_received_transport=enabled
  media_encryption=dtls
  dtls_verify=fingerprint
  dtls_setup=actpass

When "webrtc" is enabled, this patch also parses the "msid" media level
attribute from an SDP. It will also appropriately add it onto the outgoing
session when applicable.

Lastly, when "webrtc" is enabled h264 RTCP FIR feedback frames are now sent.

ASTERISK-27119 #close

Change-Id: I5ec02e07c5d5b9ad86a34fdf31bf2f9da9aac6fd

2 years agoSounds: Update for core sounds 1.6 release
Rusty Newton [Thu, 13 Jul 2017 20:43:42 +0000 (15:43 -0500)]
Sounds: Update for core sounds 1.6 release

Added necessary lines to make the en_NZ language set selectable and to get
core sounds 1.6 pulled down.

ASTERISK-26807 #close
ASTERISK-25816 #close
ASTERISK-26274 #close

Change-Id: I84e4dd4696568cc1ba318d12ac4b075461d6eed4

2 years agoMerge "res_rtp_asterisk / res_pjsip: Add support for BUNDLE."
Jenkins2 [Thu, 13 Jul 2017 19:40:11 +0000 (14:40 -0500)]
Merge "res_rtp_asterisk / res_pjsip: Add support for BUNDLE."

2 years agocore: Add PARSE_TIMELEN support to ast_parse_arg and ACO.
Corey Farrell [Mon, 10 Jul 2017 19:04:58 +0000 (15:04 -0400)]
core: Add PARSE_TIMELEN support to ast_parse_arg and ACO.

This adds support for parsing timelen values from config files.  This
includes support for all flags which apply to PARSE_INT32.  Support for
this parser is added to ACO via the OPT_TIMELEN_T option type.

Fixes an issue where extra characters provided to ast_app_parse_timelen
were ignored, they now cause an error.

Testing is included.

ASTERISK-27117 #close

Change-Id: I6b333feca7e3f83b4ef5bf2636fc0fd613742554

2 years agores_rtp_asterisk / res_pjsip: Add support for BUNDLE.
Joshua Colp [Fri, 30 Jun 2017 18:55:57 +0000 (18:55 +0000)]
res_rtp_asterisk / res_pjsip: Add support for BUNDLE.

BUNDLE is a specification used in WebRTC to allow multiple
streams to use the same underlying transport. This reduces
the number of ICE and DTLS negotiations that has to occur
to 1 normally.

This change implements this by adding support for it to
the RTP SDP module in PJSIP. BUNDLE can be turned on using
the "bundle" option and on an offer we will offer to
bundle streams together. On an answer we will accept any
bundle groups provided. Once accepted each stream is bundled
to another RTP instance for transport.

For the res_rtp_asterisk changes the ability to bundle
an RTP instance to another based on the SSRC received
from the remote side has been added. For outgoing traffic
if an RTP instance is bundled to another we will use the
other RTP instance for any transport related things. For
incoming traffic received from the transport instance we
look up the correct instance based on the SSRC and use it
for any non-transport related data.

ASTERISK-27118

Change-Id: I96c0920b9f9aca7382256484765a239017973c11

2 years agores/res_stasis_snoop: generate silence when audiohook returns null
Torrey Searle [Tue, 11 Jul 2017 14:55:36 +0000 (16:55 +0200)]
res/res_stasis_snoop: generate silence when audiohook returns null

Currently when rtp is paused, no packets are written to the
recorded audio file, causing the silence to be skipped and recording
not properly time aligned.  The read handler as been adapted to
return a silence frame of the correct size.

ASTERISK-27128 #close

Change-Id: I2d7f60650457860b9c70907b14426756b058a844

2 years agores/res_pjsip_t38 ensure t38 requests get rejected quickly
Torrey Searle [Thu, 22 Jun 2017 12:47:54 +0000 (14:47 +0200)]
res/res_pjsip_t38  ensure t38 requests get rejected quickly

arm the t38 webhook always, so we can correctly reject a
T38 negotiation request when t38 is disabled on a channel

Change-Id: Ib1ffe35aee145d4e0fe61dd012580be11aae079d

2 years agocore: Add digit filtering to ast_waitfordigit_full
Corey Farrell [Wed, 12 Jul 2017 18:24:36 +0000 (14:24 -0400)]
core: Add digit filtering to ast_waitfordigit_full

This adds a parameter to ast_waitfordigit_full which can be used to only
stop waiting when certain expected digits are received.  Any unexpected
DTMF digits are simply ignored.

This also creates a new dialplan application WaitDigit.

ASTERISK-27129 #close

Change-Id: Id233935ea3d13e71c75a0861834c5936c3700ef9

2 years agoapp_playback.c: Use the timezonename parameter
Holger Hans Peter Freyther [Tue, 11 Jul 2017 09:48:26 +0000 (11:48 +0200)]
app_playback.c: Use the timezonename parameter

In say_date_generic the timezonename parameter is passed but never
used. Fix it by passing it to the ast_localtime function.

ASTERISK-27124

Change-Id: I63106b8db10426d417d7275f22554a616e92fae4

2 years agobasic-pbx: Remove res_pjsip_multihomed from sample config
Sean Bright [Wed, 12 Jul 2017 20:07:42 +0000 (16:07 -0400)]
basic-pbx: Remove res_pjsip_multihomed from sample config

ASTERISK-27127 #close
Reported by: HZMI8gkCvPpom0tM

Change-Id: I2b0c54570d58156e37166ac536728af3b6c01789

2 years agoMerge "app_stream_echo: misc bug fixes"
Joshua Colp [Wed, 12 Jul 2017 11:13:34 +0000 (06:13 -0500)]
Merge "app_stream_echo: misc bug fixes"

2 years agoMerge "res_rtp_asterisk: trigger source change control frame when dtls is established"
Joshua Colp [Wed, 12 Jul 2017 11:13:25 +0000 (06:13 -0500)]
Merge "res_rtp_asterisk: trigger source change control frame when dtls is established"

2 years agoMerge "res_musiconhold: Add kill_escalation_delay, kill_method to class"
Joshua Colp [Wed, 12 Jul 2017 10:48:01 +0000 (05:48 -0500)]
Merge "res_musiconhold:  Add kill_escalation_delay, kill_method to class"

2 years agoMerge "manager: Remove AMI "Queues" action."
Joshua Colp [Wed, 12 Jul 2017 09:25:45 +0000 (04:25 -0500)]
Merge "manager: Remove AMI "Queues" action."

2 years agoMerge "Avoid setting maxfiles for a remote asterisk"
Joshua Colp [Wed, 12 Jul 2017 09:24:43 +0000 (04:24 -0500)]
Merge "Avoid setting maxfiles for a remote asterisk"

2 years agoMerge "http.c: Reduce log spam"
Jenkins2 [Wed, 12 Jul 2017 00:42:10 +0000 (19:42 -0500)]
Merge "http.c:  Reduce log spam"

2 years agobridge/core_unreal: Fix SFU bugs with forwarding frames.
Joshua Colp [Tue, 11 Jul 2017 19:33:44 +0000 (19:33 +0000)]
bridge/core_unreal: Fix SFU bugs with forwarding frames.

This change fixes a few things uncovered during SFU testing.

1. Unreal channels incorrectly forwarded video frames when
no video stream was present on them. This caused a crash when
they were read as the core requires a stream to exist for the
underlying media type. The Unreal channel will now ensure a
stream exists for the media type before forwarding the frame
and if no stream exists then the frame is dropped.

2. Mapping of frames during bridging from the stream number of
the underlying channel to the stream number of the bridge was
done in the wrong location. This resulted in the frame getting
dropped. This mapping now occurs on reading of the frame from
the channel.

3. Bridging was using the wrong ast_read function resulting in
it living in a non-multistream world.

4. In bridge_softmix when adding new streams to existing channels
the wrong stream topology was copied resulting in no streams
being added.

Change-Id: Ib7445722c3219951d6740802a0feddf2908c18c8

2 years agores_musiconhold: Add kill_escalation_delay, kill_method to class
George Joseph [Tue, 11 Jul 2017 12:26:27 +0000 (06:26 -0600)]
res_musiconhold:  Add kill_escalation_delay, kill_method to class

By default, when res_musiconhold reloads or unloads, it sends a HUP
signal to custom applications (and all descendants), waits 100ms,
then sends a TERM signal, waits 100ms, then finally sends a KILL
signal.  An application which is interacting with an external
device and/or spawns children of its own may not be able to exit
cleanly in the default times, expecially if sent a KILL signal, or
if it's children are getting signals directly from
res_musiconhoild.

* To allow extra time, the 'kill_escalation_delay'
  class option can be used to set the number of milliseconds
  res_musiconhold waits before escalating kill signals, with the
  default being the current 100ms.

* To control to whom the signals are sent, the "kill_method" class
  option can be set to "process_group" (the default, existing
  behavior), which sends signals to the application and its
  descendants directly, or "process" which sends signals only to the
  application itself.

Change-Id: Iff70a1a9405685a9021a68416830c0db5158603b

2 years agomanager: Remove AMI "Queues" action.
Benjamin Keith Ford [Wed, 5 Jul 2017 17:44:18 +0000 (12:44 -0500)]
manager: Remove AMI "Queues" action.

When performing the "Queues" action via AMI, it outputs the same
text that the Asterisk CLI outputs when running a "queue show"
command, which does not conform with the AMI spec. "QueueStatus"
already does what the "Queues" action should do, so instead of
correcting the output, the "Queues" action will be removed and
"QueueStatus" should be used instead.

ASTERISK-27073 #close
Reported by: Brian

Change-Id: Id11743859758255b69cc3a557750d7a56c6d16f8

2 years agoAvoid setting maxfiles for a remote asterisk
Tzafrir Cohen [Mon, 3 Jul 2017 12:30:37 +0000 (15:30 +0300)]
Avoid setting maxfiles for a remote asterisk

Setting maxfiles (maximum number of open files) has no practical
effect on a remote asterisk (rasterisk, rasterisk -x).

It has an ill effect of printing an extra message, which
may be annoying in case of -x.

ASTERISK-27105 #close

Change-Id: Iaf9eb344e4b4b517df91b736b27ec55f6a6921a2

2 years agohttp.c: Reduce log spam
George Joseph [Wed, 5 Jul 2017 20:31:43 +0000 (14:31 -0600)]
http.c:  Reduce log spam

Messages like "fwrite() failed: Connection reset by peer" are no
help whatsoever, especially since they can be caused simply by a
client disconnecting.

* Make those WARNINGs DEBUGs.
* Check the return from ast_iostream_printf of headers.

Change-Id: I17bd5f3621514152a7b2b263c801324c5e96568b

2 years agoMerge "res_pjsip: Fix crash with from_user containing invalid characters."
Jenkins2 [Tue, 11 Jul 2017 12:08:39 +0000 (07:08 -0500)]
Merge "res_pjsip: Fix crash with from_user containing invalid characters."

2 years agoMerge "json.c: Add backtrace log to find 'Invalid UTF-8 string' errors"
Jenkins2 [Mon, 10 Jul 2017 16:41:17 +0000 (11:41 -0500)]
Merge "json.c: Add backtrace log to find 'Invalid UTF-8 string' errors"

2 years agoMerge "res_rtp_asterisk.c: Fix TURN deadlock by using ICE session group lock."
Jenkins2 [Mon, 10 Jul 2017 16:19:16 +0000 (11:19 -0500)]
Merge "res_rtp_asterisk.c: Fix TURN deadlock by using ICE session group lock."

2 years agoMerge "bridge_native_rtp.c: Fix direct media video RTP instance ACL check."
Jenkins2 [Mon, 10 Jul 2017 15:53:11 +0000 (10:53 -0500)]
Merge "bridge_native_rtp.c: Fix direct media video RTP instance ACL check."

2 years agores_pjsip: Fix crash with from_user containing invalid characters.
Benjamin Keith Ford [Fri, 7 Jul 2017 16:19:13 +0000 (11:19 -0500)]
res_pjsip: Fix crash with from_user containing invalid characters.

If the from_user field contains certain characters (like @, {, ^, etc.),
PJSIP will return a null value for the URI when attempting to parse it.
This causes a crash when trying to dial out through a trunk that contains
these invalid characters in its from_user field.

This change checks the configuration and ensures that an endpoint will
not be created if the from_user contains an invalid character. It also
adds a null check to the PJSIP URI parsing as a backup.

ASTERISK-27036 #close
Reported by: Maxim Vasilev

Change-Id: I0396fdb5080604e0bdf1277464d5c8a85db913d0

2 years agoMerge "app_queue: Add priority to AMI QueueStatus"
George Joseph [Mon, 10 Jul 2017 14:50:37 +0000 (09:50 -0500)]
Merge "app_queue: Add priority to AMI QueueStatus"

2 years agojson.c: Add backtrace log to find 'Invalid UTF-8 string' errors
Richard Mudgett [Wed, 28 Jun 2017 00:27:43 +0000 (19:27 -0500)]
json.c: Add backtrace log to find 'Invalid UTF-8 string' errors

Change-Id: I9020ff9f2b3749904317c0c173f47a1bbed6f929

2 years agoMerge "app_voicemail: Cleanup ODBC connection handling"
Joshua Colp [Fri, 7 Jul 2017 21:38:21 +0000 (16:38 -0500)]
Merge "app_voicemail: Cleanup ODBC connection handling"

2 years agoMerge "core: Remove 'Data Retrieval API'"
Jenkins2 [Fri, 7 Jul 2017 20:42:56 +0000 (15:42 -0500)]
Merge "core: Remove 'Data Retrieval API'"

2 years agores_rtp_asterisk.c: Fix TURN deadlock by using ICE session group lock.
Richard Mudgett [Wed, 5 Jul 2017 18:39:45 +0000 (13:39 -0500)]
res_rtp_asterisk.c: Fix TURN deadlock by using ICE session group lock.

When a message is received on the TURN socket, the code processing the
message needs to call into the ICE/STUN session for further processing.
This code path locks the TURN group lock then the ICE/STUN group lock.  In
another thread an ICE/STUN timer can fire off to send a keep alive message
over the TURN socket.  In this code path, the ICE/STUN group lock is
obtained then the TURN group lock is obtained to send the packet.  A
classic deadlock case if the group locks are not the same.

* Made TURN get created using the ICE/STUN session's group lock.

NOTE: I was originally concerned that the ICE/STUN session can get
recreated by ice_reset_session() for an event like RTCP multiplexing
causing a change during SDP negotiation.  In this case the TURN group lock
would become different.  However, TURN is also recreated as part of the
ICE/STUN recreation in ice_create() when all known ICE candidates are
added to the new ICE session.  While the ICE/STUN and TURN sessions are
being recreated there is a period where the group locks could be
different.

ASTERISK-27023 #close
Patches:
    res_rtp_asterisk-turn-deadlock-fix.patch (license #6502)
        patch uploaded by Michael Walton (modified)

Change-Id: Ic870edb99ce4988a8c8eb6e678ca7f19da1432b9

2 years agoFix alembic branches
George Joseph [Thu, 6 Jul 2017 10:55:17 +0000 (04:55 -0600)]
Fix alembic branches

Change-Id: I04f607f084bda9b1b7f626e8e9735c37dc751187

2 years agoMerge "channel: Clear channel flag in error branch."
Joshua Colp [Wed, 5 Jul 2017 23:46:10 +0000 (18:46 -0500)]
Merge "channel: Clear channel flag in error branch."

2 years agoMerge "pjproject_bundled: Allow passing configure options to bundled"
Jenkins2 [Wed, 5 Jul 2017 22:59:39 +0000 (17:59 -0500)]
Merge "pjproject_bundled:  Allow passing configure options to bundled"

2 years agobridge_native_rtp.c: Fix direct media video RTP instance ACL check.
Richard Mudgett [Fri, 23 Jun 2017 16:17:51 +0000 (11:17 -0500)]
bridge_native_rtp.c: Fix direct media video RTP instance ACL check.

The video stream was using the audio stream RTP instance addresses to
check if the video RTP gets directed to an allowed direct media Access
Control List (ACL) address.  There is no guarantee that the video RTP
instance uses the same addresses as the audio RTP instance.

This looks like it has been a bug since v11 when direct media ACL was
first added to chan_sip and then faithfully reproduced through a couple
code refactorings into the new bridging architecture.

Change-Id: I8ddd56320e0eea769f3ceed3fa5b6bdfb51d681a

2 years agoMerge "bridge_native_rtp: Keep rtp instance refs on bridge_channel"
George Joseph [Wed, 5 Jul 2017 22:03:28 +0000 (17:03 -0500)]
Merge "bridge_native_rtp: Keep rtp instance refs on bridge_channel"

2 years agoMerge "chan_sip: Fix a typo for tlsbindaddr in autodomain (SIP Domain Support)."
Jenkins2 [Wed, 5 Jul 2017 21:37:39 +0000 (16:37 -0500)]
Merge "chan_sip: Fix a typo for tlsbindaddr in autodomain (SIP Domain Support)."

2 years agoMerge "chan_sip: Only when different, add TCP|TLS in autodomain (SIP Domain Support)."
Jenkins2 [Wed, 5 Jul 2017 21:29:45 +0000 (16:29 -0500)]
Merge "chan_sip: Only when different, add TCP|TLS in autodomain (SIP Domain Support)."

2 years agoMerge "pjsip_distributor.c: Fix deadlock with TCP type transports."
George Joseph [Wed, 5 Jul 2017 21:08:46 +0000 (16:08 -0500)]
Merge "pjsip_distributor.c: Fix deadlock with TCP type transports."

2 years agoMerge "pjsip_distributor.c: Fix unidentified_requests hash functions."
Jenkins2 [Wed, 5 Jul 2017 20:32:40 +0000 (15:32 -0500)]
Merge "pjsip_distributor.c: Fix unidentified_requests hash functions."

2 years agoMerge "chan_pjsip: Fix ability to send UPDATE on COLP"
Jenkins2 [Wed, 5 Jul 2017 19:17:23 +0000 (14:17 -0500)]
Merge "chan_pjsip:  Fix ability to send UPDATE on COLP"

2 years agocore: Remove 'Data Retrieval API'
Sean Bright [Wed, 5 Jul 2017 15:29:01 +0000 (11:29 -0400)]
core: Remove 'Data Retrieval API'

This API was not actively maintained, was not added to new modules
(such as res_pjsip), and there exist better alternatives to acquire the
same information, such as the ARI.

Change-Id: I4b2185a83aeb74798b4ad43ff8f89f971096aa83

2 years agoapp_queue: Add change priority of call
Rodrigo Ramírez Norambuena [Mon, 19 Jun 2017 16:22:40 +0000 (12:22 -0400)]
app_queue: Add change priority of call

This patch include a feature to change the priority a caller in a
queue by CLI and AMI.

Change-Id: I55d520d71cc1cefe9a9b81fefaefc14679e96133

2 years agochan_sip: Only when different, add TCP|TLS in autodomain (SIP Domain Support).
Alexander Traud [Mon, 3 Jul 2017 15:59:43 +0000 (17:59 +0200)]
chan_sip: Only when different, add TCP|TLS in autodomain (SIP Domain Support).

When sip.conf contained tcpenable=yes and autodomain=yes, the TCP domain was
added in any case, because of a local Boolean-negation error of the return value
of ast_sockaddr_cmp. After fixing this error for TCP and TLS, the TLS domain was
still always added with tlsenable=yes, because the domains were not compared
just on the address but also on the port – and TLS is always on a different port
than UDP/TCP.

ASTERISK-27106

Change-Id: I14fe9e319e238320b094016980445ef3a5b3337c

2 years agochan_sip: Fix a typo for tlsbindaddr in autodomain (SIP Domain Support).
Alexander Traud [Mon, 3 Jul 2017 15:38:32 +0000 (17:38 +0200)]
chan_sip: Fix a typo for tlsbindaddr in autodomain (SIP Domain Support).

Because of a copy-and-paste error when the struct ast_sockaddr changed,
tlsbindaddr was not added, when sip.conf contained autodomain=yes; see
"show sip domains" on the command-line interface (CLI) of Asterisk.

ASTERISK-27106

Change-Id: I3d0957150017c223136968ef1266f275d0d6695e

2 years agoapp_voicemail: Cleanup ODBC connection handling
Sean Bright [Thu, 29 Jun 2017 18:58:35 +0000 (14:58 -0400)]
app_voicemail: Cleanup ODBC connection handling

The primary focus of this patch is adding a missing call to
ast_odbc_release_obj(), but is also a general cleanup of the ODBC
related code in app_voicemail.

ASTERISK-27093 #close

Change-Id: I8e285142eaeb3146b4287a928276b70db76c902b

2 years agochannel: Clear channel flag in error branch.
Corey Farrell [Sat, 1 Jul 2017 04:57:31 +0000 (00:57 -0400)]
channel: Clear channel flag in error branch.

Clear channel flag AST_FLAG_END_DTMF_ONLY in ast_waitfordigit_full when
ast_read returns NULL.

ASTERISK-27100 #close

Change-Id: Id3039e9a4e74e0cb359f636c9fd0c9740ebf7d9d

2 years agoMerge "app_queue: Fix returning to dialplan when a queue is empty"
Jenkins2 [Fri, 30 Jun 2017 20:52:38 +0000 (15:52 -0500)]
Merge "app_queue: Fix returning to dialplan when a queue is empty"

2 years agopjsip_distributor.c: Fix deadlock with TCP type transports.
Richard Mudgett [Thu, 29 Jun 2017 23:27:20 +0000 (18:27 -0500)]
pjsip_distributor.c: Fix deadlock with TCP type transports.

When a SIP message comes in on a transport, pjproject obtains the lock on
the transport and pulls the data out of the socket.  Unlike UDP, the TCP
transport does not allow concurrent access.  Without concurrency the
transport lock is not released when the transport's message complete
callback is called.  The processing continues and eventually Asterisk
starts processing the SIP message.  The first thing Asterisk tries to do
is determine the associated dialog of the message to determine the
associated serializer.  To get the associated serializer safely requires
us to get the dialog lock.

To send a request or response message for a dialog, pjproject obtains the
dialog lock and then obtains the transport lock.  Deadlock can result
because of the opposite order the locks are obtained.

* Fix the deadlock by obtaining the serializer associated with the dialog
another way that doesn't involve obtaining the dialog lock.  In this case,
we use an ao2 container to hold the associated endpoint and serializer.
The new locks are held a brief time and won't overlap other existing lock
times.

ASTERISK-27090 #close

Change-Id: I9ed63f4da9649e9db6ed4be29c360968917a89bd

2 years agopjsip_distributor.c: Fix unidentified_requests hash functions.
Richard Mudgett [Thu, 29 Jun 2017 23:22:33 +0000 (18:22 -0500)]
pjsip_distributor.c: Fix unidentified_requests hash functions.

The OBJ_SEARCH_xxx defines should not be used as if they were individual
bits.  They represent a multi-bit enumeration value field.

Change-Id: I32abc9a475396dab02402a7014357dd94284e17b

2 years agoMerge "res_pjsip: Add DTMF INFO Failback mode"
Jenkins2 [Fri, 30 Jun 2017 16:57:00 +0000 (11:57 -0500)]
Merge "res_pjsip:  Add DTMF INFO Failback mode"

2 years agoMerge "res_rtp_asterisk: Fix issues with ICE renegotiation."
Joshua Colp [Fri, 30 Jun 2017 16:47:42 +0000 (11:47 -0500)]
Merge "res_rtp_asterisk: Fix issues with ICE renegotiation."

2 years agoapp_stream_echo: misc bug fixes
Kevin Harwell [Thu, 29 Jun 2017 20:06:21 +0000 (15:06 -0500)]
app_stream_echo: misc bug fixes

Fixed the following bugs:

* calls to stream_echo_write had the last two parameters swapped
* ast_read should have been ast_read_stream
* added a null check on the frame's subclass format

This also resets the update_sent flag upon receiving SRRCHANGE control frame.
This will then force a video update.

ASTERISK-26997

Change-Id: I6ad7c8253559b800800433c52339e7f5aa583566

2 years agores_rtp_asterisk: trigger source change control frame when dtls is established
Kevin Harwell [Thu, 29 Jun 2017 19:56:10 +0000 (14:56 -0500)]
res_rtp_asterisk: trigger source change control frame when dtls is established

There needed to be a way to notify handlers upstream that DTLS had been
established. This patch makes it so once DTLS has been estalished a source
change control frame is put into the read queue. Any handlers can then watch
for that frame and trigger off of it.

ASTERISK-27096 #close

Change-Id: I27ff344f5a8c691a1890dfe3254a4b1a49e7f4a0

2 years agopjproject_bundled: Allow passing configure options to bundled
George Joseph [Fri, 30 Jun 2017 13:31:52 +0000 (07:31 -0600)]
pjproject_bundled:  Allow passing configure options to bundled

There wasn't any good way to pass options like --host or --build
down to the pjproject configure which makes cross-compiling difficult.

* Added a new PJPROJECT_CONFIGURE_OPTS environment variable which
  can be used to pass arbitrary options to pjproject configure.
* Automatically set the pjproject configure --host and --build
  options to match those supplied for the asterisk configure.

ASTERISK-27097 #close
Reported-by: Kinsey Moore

Change-Id: I5fa776e110262851173002a26ffe1172e4c35b2e

2 years agochan_pjsip: Fix ability to send UPDATE on COLP
George Joseph [Thu, 29 Jun 2017 19:50:14 +0000 (13:50 -0600)]
chan_pjsip:  Fix ability to send UPDATE on COLP

When connected_line_method is "invite", we're supposed to determine
if the client can support UPDATE and if it can, send UPDATE instead
of INVITE to avoid the SDP renegotiation.  Not only was pjproject
not setting the PJSIP_INV_SUPPORT_UPDATE flag, we were testing
that invite_tsx wasn't NULL which isn't always the case.

* Updated chan_pjsip/update_connected_line_information to drop the
  requirement that invite_tsx isn't NULL.
* Submitted patch to pjproject sip_inv.c that sets the
  PJSIP_INV_SUPPORT_UPDATE flag correctly.
* Updated pjsip.conf.sample to clarify what happens when "invite"
  is specified.

ASTERISK-27095

Change-Id: Ic2381b3567b8052c616d96fbe79564c530e81560

2 years agoMerge "app_voicemail: IMAP connection control"
Jenkins2 [Thu, 29 Jun 2017 14:51:54 +0000 (09:51 -0500)]
Merge "app_voicemail: IMAP connection control"

2 years agores_pjsip: Add DTMF INFO Failback mode
Torrey Searle [Thu, 15 Jun 2017 08:12:41 +0000 (10:12 +0200)]
res_pjsip:  Add DTMF INFO Failback mode

The existing auto dtmf mode reverts to inband if 4733 fails to be
negotiated.  This patch adds a new mode auto_info which will
switch to INFO instead of inband if 4733 is not available.

ASTERISK-27066 #close

Change-Id: Id185b11e84afd9191a2f269e8443019047765e91

2 years agoapp_queue: Add priority to AMI QueueStatus
Niklas Larsson [Thu, 29 Jun 2017 08:47:41 +0000 (10:47 +0200)]
app_queue: Add priority to AMI QueueStatus

Add priority to callers in AMI QueueStatus response

ASTERISK-27092 #close

Change-Id: I8d1f737a72c7c38f4cfe1a4ee3ecc0a4f85bd199

2 years agochan_pjsip: Add support for multiple streams of the same type.
Mark Michelson [Tue, 30 May 2017 14:12:47 +0000 (09:12 -0500)]
chan_pjsip: Add support for multiple streams of the same type.

The stream topology (list of streams and order) is now stored with the
configured PJSIP endpoints and used during the negotiation process.

Media negotiation state information has been changed to be stored
in a separate object. Two of these objects exist at any one time
on a session. The active media state information is what was previously
negotiated and the pending media state information is what the
media state will become if negotiation succeeds. Streams and other
state information is stored in this object using the index (or
position) of each individual stream for easy lookup.

The ability for a media type handler to specify a callback for
writing has been added as well as the ability to add file
descriptors with a callback which is invoked when data is available
to be read on them. This allows media logic to live outside of
the chan_pjsip module.

Direct media has been changed so that only the first audio and
video stream are directly connected. In the future once the RTP
engine glue API has been updated to know about streams each individual
stream can be directly connected as appropriate.

Media negotiation itself will currently answer all the provided streams
on an offer within configured limits and on an offer will use the
topology created as a result of the disallow/allow codec lines.

If a stream has been removed or declined we will now mark it as such
within the resulting SDP.

Applications can now also request that the stream topology change.
If we are told to do so we will limit any provided formats to the ones
configured on the endpoint and send a re-invite with the new topology.

Two new configuration options have also been added to PJSIP endpoints:

max_audio_streams: determines the maximum number of audio streams to
offer/accept from an endpoint. Defaults to 1.

max_video_streams: determines the maximum number of video streams to
offer/accept from an endpoint. Defaults to 1.

ASTERISK-27076

Change-Id: I8afd8dd2eb538806a39b887af0abd046266e14c7

2 years agores_rtp_asterisk: Fix issues with ICE renegotiation.
Joshua Colp [Wed, 28 Jun 2017 14:03:31 +0000 (14:03 +0000)]
res_rtp_asterisk: Fix issues with ICE renegotiation.

When re-inviting to add more streams it is possible for
the role of existing ICE sessions to be changed to the
incorrect value. This results in subsequent refreshes
within the sessions getting a role conflict and the ICE
session breaking down. This change only sets the role to
be the new value if an ICE renegotiation is actually
going to happen, otherwise the existing role is preserved.

As well if we encounter a situation where a unidirectional
ICE negotiation happens and the other side does not send us
candidates we will not store any information for sending
traffic, even though we know where they are reachable. This
change fixes this by using the source of the ICE traffic
itself as the target if no candidates are known and we
receive some ICE traffic.

ASTERISK-27088

Change-Id: I71228181e358917fcefc3100fad21b2fc02a59a9

2 years agores/res_pjsip_t38: fix incorrect increment of media_count
Torrey Searle [Tue, 27 Jun 2017 15:46:43 +0000 (17:46 +0200)]
res/res_pjsip_t38: fix incorrect increment of media_count

The T38 sdp callback incorrectly has a side effect of incrementing
the media_count.  This can lead to core dumps.

Change-Id: I7bb2f4987de4046ec52cfc34e5ea0662dae32af8

2 years agobridge_native_rtp: Keep rtp instance refs on bridge_channel
George Joseph [Fri, 9 Jun 2017 03:50:43 +0000 (21:50 -0600)]
bridge_native_rtp: Keep rtp instance refs on bridge_channel

There have been reports of deadlocks caused by an attempt to send a frame
to a channel's rtp instance after the channel has left the native bridge
and been destroyed.  This patch effectively causes the bridge channel to
keep a reference to the glue and both the audio and video rtp instances
so what gets started will get stopped.

ASTERISK-26978 #close
Reported-by: Ross Beer

Change-Id: I9e1ac49fa4af68d64826ccccd152593cf8cdb21a

2 years agoapp_queue: Fix returning to dialplan when a queue is empty
Ivan Poddubny [Tue, 27 Jun 2017 09:37:11 +0000 (11:37 +0200)]
app_queue: Fix returning to dialplan when a queue is empty

The fix for ASTERISK-25665 introduced a regression.
The return value of queue_exec used to be 0 in case of leavewhenempty
but it was changed to -1 (returned from wait_our_turn and passed
transparently by queue_exec), thus leading to hangup instead of returning
back to dialplan.

This commit resets the value back to 0 in this case, restoring
original behavior.

ASTERISK-27065 #close
Reported by: Marek Cervenka

Change-Id: Id9c83b75aeda463250155e88c5004be52bbca5ac

2 years agoMerge "res_pjsip_mwi: update unsolicited MWI subscriptions on updating contact"
Jenkins2 [Thu, 22 Jun 2017 21:01:52 +0000 (16:01 -0500)]
Merge "res_pjsip_mwi: update unsolicited MWI subscriptions on updating contact"

2 years agoapp_voicemail: IMAP connection control
Alexei Gradinari [Mon, 19 Jun 2017 22:21:29 +0000 (18:21 -0400)]
app_voicemail: IMAP connection control

A new global option "imap_poll_logout" was added to specify whether need to
disconnect from the IMAP server after polling of mailboxes.

ASTERISK-27068 #close

Closing IMAP connection after loading mailbox from voicemail.conf

ASTERISK-24052 #close

Change-Id: Ib7558ba04516240a32b65f42e9be64372a0ae12a

2 years agores_pjsip_mwi.c: Eliminate RAII_VAR in contact delete observer
Richard Mudgett [Wed, 21 Jun 2017 22:57:11 +0000 (17:57 -0500)]
res_pjsip_mwi.c: Eliminate RAII_VAR in contact delete observer

Change-Id: I0bc97c6608de1d1a4228826b3b3be43f162f05f3

2 years agores_pjsip_mwi: update unsolicited MWI subscriptions on updating contact
Alexei Gradinari [Fri, 16 Jun 2017 23:08:30 +0000 (19:08 -0400)]
res_pjsip_mwi: update unsolicited MWI subscriptions on updating contact

Do not need to unsubscribe/subscribe on creating the ednpoint's contact.
The modified function create_mwi_subscriptions_for_endpoint adds
the subscription only if it does not exist.

The subscriptions aren't added for active contacts
which are retrieved on startup from realtime
if mwi_disable_initial_unsolicited=yes.
Because the mwi_contact_added is not called.
So the subscriptions also should be created on updating contact.

ASTERISK-26230 #close

Change-Id: I47e265af9296ca09aa42a316fdacac104148cee4

2 years agoMerge "bridge: stuck channel(s) after failed attended transfer"
Jenkins2 [Wed, 21 Jun 2017 22:57:21 +0000 (17:57 -0500)]
Merge "bridge: stuck channel(s) after failed attended transfer"

2 years agoMerge "core_local: local channel data not being properly unref'ed and unlocked"
Jenkins2 [Wed, 21 Jun 2017 22:30:01 +0000 (17:30 -0500)]
Merge "core_local: local channel data not being properly unref'ed and unlocked"

2 years agocore_local: local channel data not being properly unref'ed and unlocked
Kevin Harwell [Tue, 20 Jun 2017 21:05:08 +0000 (16:05 -0500)]
core_local: local channel data not being properly unref'ed and unlocked

In an earlier version of Asterisk a local channel [un]lock all functions were
added in order to keep a crash from occurring when a channel hung up too early
during an attended transfer. Unfortunately, when a transfer failure occurs and
depending on the timing, the local channels sometime do not get properly
unlocked and deref'ed after being locked and ref'ed. This happens because the
underlying local channel structure gets NULLed out before unlocking.

This patch reworks those [un]lock functions and makes sure the values that get
locked and ref'ed later get unlocked and deref'ed.

ASTERISK-27074 #close

Change-Id: Ice96653e29bd9d6674ed5f95feb6b448ab148b09

2 years agobridge: stuck channel(s) after failed attended transfer
Kevin Harwell [Tue, 20 Jun 2017 21:01:48 +0000 (16:01 -0500)]
bridge: stuck channel(s) after failed attended transfer

If an attended transfer failed it was possible for some of the channels
involved to get "stuck" because Asterisk was not hanging up the transfer target.

This patch ensures Asterisk hangs up the transfer target when an attended
transfer failure occurs.

ASTERISK-27075 #close

Change-Id: I98a6ecd92d3461ab98c36f0d9451d23adaf3e5f9

2 years agoMerge "res_corosync: Change thread stack size"
Jenkins2 [Tue, 20 Jun 2017 23:18:19 +0000 (18:18 -0500)]
Merge "res_corosync: Change thread stack size"

2 years agoMerge "cdr: fix mistake spelling of a word for Unanswered."
Jenkins2 [Tue, 20 Jun 2017 14:25:17 +0000 (09:25 -0500)]
Merge "cdr: fix mistake spelling of a word for Unanswered."

2 years agoMerge "res_pjsip_mwi: unsubscribe unsolicited MWI on deleting endpoint last contact"
Joshua Colp [Tue, 20 Jun 2017 10:47:46 +0000 (05:47 -0500)]
Merge "res_pjsip_mwi: unsubscribe unsolicited MWI on deleting endpoint last contact"

2 years agoMerge "res_stasis: Plug reference leak on stolen channels"
Joshua Colp [Mon, 19 Jun 2017 21:49:39 +0000 (16:49 -0500)]
Merge "res_stasis:  Plug reference leak on stolen channels"

2 years agocdr: fix mistake spelling of a word for Unanswered.
Rodrigo Ramírez Norambuena [Mon, 19 Jun 2017 16:28:18 +0000 (12:28 -0400)]
cdr: fix mistake spelling of a word for Unanswered.

Change-Id: I7a610bef369924523a445c7e849ee88cc45dc5df

2 years agoMerge "SDP: Add get/set option calls for RTP sched context per type."
George Joseph [Mon, 19 Jun 2017 14:27:43 +0000 (09:27 -0500)]
Merge "SDP: Add get/set option calls for RTP sched context per type."

2 years agoMerge "res_pjsip: New endpoint option "notify_early_inuse_ringing""
Jenkins2 [Mon, 19 Jun 2017 14:09:58 +0000 (09:09 -0500)]
Merge "res_pjsip: New endpoint option "notify_early_inuse_ringing""

2 years agoMerge "app_voicemail: IMAP logout on reload/unload"
Jenkins2 [Mon, 19 Jun 2017 13:52:12 +0000 (08:52 -0500)]
Merge "app_voicemail: IMAP logout on reload/unload"