3 years agoSDP: Set the remote c= line in RTP instance.
Richard Mudgett [Thu, 11 May 2017 23:46:52 +0000 (18:46 -0500)]
SDP: Set the remote c= line in RTP instance.

Change-Id: I23b646392082deab65bedeb19b12dcbcb9216d0c

3 years agoSDP: Add t= line in sdp_create_from_state()
Richard Mudgett [Thu, 11 May 2017 19:09:06 +0000 (14:09 -0500)]
SDP: Add t= line in sdp_create_from_state()

Change-Id: I4060391328a893101ed87d0d9bacbbab4fd8b141

3 years agostream: Ignore declined streams for some topology calls.
Richard Mudgett [Wed, 14 Jun 2017 18:07:17 +0000 (13:07 -0500)]
stream: Ignore declined streams for some topology calls.

* Made ast_format_cap_from_stream_topology() not include any formats from
declined streams.

* Made ast_stream_topology_get_first_stream_by_type() ignore declined
streams to return the first active stream of the type.

* Updated unit tests to check these changes have the expected effect.

Change-Id: Iabbc6a3e8edf263a25fd3056c3c614407c7897df

3 years agostream: Add ast_stream_topology_del_stream() and unit test.
Richard Mudgett [Sat, 10 Jun 2017 00:03:05 +0000 (19:03 -0500)]
stream: Add ast_stream_topology_del_stream() and unit test.

Change-Id: If07e3c716a2e3ff85ae905c17572ea6ec3cdc1f9

3 years agoMerge "app_voicemail.c: Fix compile error when IMAP enabled."
George Joseph [Thu, 15 Jun 2017 14:06:23 +0000 (09:06 -0500)]
Merge "app_voicemail.c: Fix compile error when IMAP enabled."

3 years agoMerge "app_voicemail: IMAP logout on MWI unsubscribe"
George Joseph [Thu, 15 Jun 2017 14:05:57 +0000 (09:05 -0500)]
Merge "app_voicemail: IMAP logout on MWI unsubscribe"

3 years agoMerge "res_pjsip_refer/session: Calls dropped during transfer"
Jenkins2 [Thu, 15 Jun 2017 13:12:43 +0000 (08:12 -0500)]
Merge "res_pjsip_refer/session: Calls dropped during transfer"

3 years agoMerge "res_rtp_asterisk: Fix ssrc change for rtcp srtp"
George Joseph [Wed, 14 Jun 2017 21:05:37 +0000 (16:05 -0500)]
Merge "res_rtp_asterisk:  Fix ssrc change for rtcp srtp"

3 years agoMerge "res_pjsip_session: Correct inverted test in session_outgoing_nat_hook"
Jenkins2 [Wed, 14 Jun 2017 20:54:22 +0000 (15:54 -0500)]
Merge "res_pjsip_session:  Correct inverted test in session_outgoing_nat_hook"

3 years agoMerge "res_pjsip_transport_websocket: Add NULL check in get_write_timeout"
Jenkins2 [Wed, 14 Jun 2017 20:24:32 +0000 (15:24 -0500)]
Merge "res_pjsip_transport_websocket: Add NULL check in get_write_timeout"

3 years agoMerge "pjproject_bundled: Use the asterisk github mirror for download"
George Joseph [Wed, 14 Jun 2017 19:42:32 +0000 (14:42 -0500)]
Merge "pjproject_bundled:  Use the asterisk github mirror for download"

3 years agoapp_voicemail.c: Fix compile error when IMAP enabled.
Richard Mudgett [Wed, 14 Jun 2017 17:34:06 +0000 (12:34 -0500)]
app_voicemail.c: Fix compile error when IMAP enabled.

Change-Id: I2703f15b4099b4210c68eccf293105d1975c1fc1

3 years agoapp_voicemail: IMAP logout on MWI unsubscribe
Alexei Gradinari [Mon, 12 Jun 2017 22:55:15 +0000 (18:55 -0400)]
app_voicemail: IMAP logout on MWI unsubscribe

Closing IMAP connection on MWI unsubscribe.

ASTERISK-24052 #close

Change-Id: I4ff964026002b2817b48c20fb4239f0a880228fd

3 years agores_pjsip_session: Correct inverted test in session_outgoing_nat_hook
George Joseph [Wed, 14 Jun 2017 13:29:00 +0000 (07:29 -0600)]
res_pjsip_session:  Correct inverted test in session_outgoing_nat_hook

There was a typo introduced in commit 776ffd77 which was preventing
the transport's external media address from being used.

ASTERISK-27024 #close
Reported-by: Christopher van de Sande
patch.diff submitted by Florian Floimair (license 6892)

Change-Id: I7ec617171eaa2d86d2680b00cf37d5088adafc27

3 years agoMerge "CFLAGS for BIND8 support"
Joshua Colp [Wed, 14 Jun 2017 16:07:04 +0000 (11:07 -0500)]
Merge "CFLAGS for BIND8 support"

3 years agores_rtp_asterisk: Fix ssrc change for rtcp srtp
George Joseph [Wed, 14 Jun 2017 13:54:45 +0000 (07:54 -0600)]
res_rtp_asterisk:  Fix ssrc change for rtcp srtp

It looks like there was a copy/paste error in ast_rtp_change_source
where if there was a rtcp srtp instance, instead of updating its
ssrc we were updating the srtp instance ssrc twice.

ASTERISK-27022 #close
Reported-by: Michael Walton

Change-Id: Ic88f3aee7227b401c58745ac265ff92c19620095

3 years agores_pjsip_refer/session: Calls dropped during transfer
Kevin Harwell [Tue, 13 Jun 2017 19:17:29 +0000 (14:17 -0500)]
res_pjsip_refer/session: Calls dropped during transfer

When doing an attended transfer it's possible for the transferer, after
receiving an accepted response from Asterisk, to send a BYE to Asterisk,
which can then be processed before Asterisk has time to start and/or
complete the transfer process. This of course causes the transfer to not
complete successfully, thus dropping the call.

This patch makes it so any BYEs received from the transferer, after the REFER,
that initiate a session end are deferred until the transfer is complete. This
allows the channel that would have otherwise been hung up by Asterisk to
remain available throughout the transfer process.

ASTERISK-27053 #close

Change-Id: I43586db79079457d92d71f1fd993be9a3b409d5a

3 years agopjproject_bundled: Use the asterisk github mirror for download
George Joseph [Tue, 13 Jun 2017 15:47:43 +0000 (09:47 -0600)]
pjproject_bundled:  Use the asterisk github mirror for download

We now mirror the pjproject tarball and md5 at

To improve download reliability, we now get the tarball from
our mirror instead of from

ASTERISK-27052 #close
Reported-by: 'alex'

Change-Id: I60236587a8935bfa71fcc391f4e2ecb31918c08a

3 years agores_pjsip_mwi: don't create mwi subscriptions if initial unsolicited disabled
Alexei Gradinari [Mon, 12 Jun 2017 14:57:24 +0000 (10:57 -0400)]
res_pjsip_mwi: don't create mwi subscriptions if initial unsolicited disabled

If sending unsolicited mwi to all endpoints on startup is disabled
(mwi_disable_initial_unsolicited=yes) do not need to create subscriptions.
If there are many (thousands) realtime endpoints configured with unsolicited mwi
and Vociemail Storage configured as ODBC or IMAP there will be huge number of
DB/IMAP requests on startup.

ASTERISK-26230 #close

Change-Id: I50ae909639e3ee298b931a54def4b2b9e0fb86c5

3 years agoMerge "pjsip: Extend 'asymmetric_rtp_codec' option to include us changing."
Jenkins2 [Tue, 13 Jun 2017 14:17:10 +0000 (09:17 -0500)]
Merge "pjsip: Extend 'asymmetric_rtp_codec' option to include us changing."

3 years agoMerge "BuildSystem: Add patches to allow building with recent LibreSSL"
Jenkins2 [Tue, 13 Jun 2017 10:47:10 +0000 (05:47 -0500)]
Merge "BuildSystem: Add patches to allow building with recent LibreSSL"

3 years agoMerge "BuildSystem: Fix build on FreeBSD due to missing crypt.h"
Jenkins2 [Mon, 12 Jun 2017 21:33:58 +0000 (16:33 -0500)]
Merge "BuildSystem: Fix build on FreeBSD due to missing crypt.h"

3 years agoMerge "codecs.conf.sample: Fix max_bandwidth speling error"
Jenkins2 [Mon, 12 Jun 2017 21:07:50 +0000 (16:07 -0500)]
Merge "codecs.conf.sample: Fix max_bandwidth speling error"

3 years agoMerge "eventfd: Disable during cross compilation"
Joshua Colp [Mon, 12 Jun 2017 20:32:12 +0000 (15:32 -0500)]
Merge "eventfd: Disable during cross compilation"

3 years agocodecs.conf.sample: Fix max_bandwidth speling error
Sean Bright [Sun, 11 Jun 2017 17:06:17 +0000 (13:06 -0400)]
codecs.conf.sample: Fix max_bandwidth speling error

Reported by Sylvain Boily via asterisk-dev mailing list.

Change-Id: Idc7623f335aea3e144dd369ba383b9a757480a9d

3 years agores_pjsip_transport_websocket: Add NULL check in get_write_timeout
Jørgen H [Thu, 8 Jun 2017 22:31:47 +0000 (22:31 +0000)]
res_pjsip_transport_websocket: Add NULL check in get_write_timeout

Added check for NULL return value when calling
ast_sorcery_retrieve_by_id in function get_write_timeout


Change-Id: I9357717278da631c3a1cb502c412693929b0cb41

3 years agoBuildSystem: Add patches to allow building with recent LibreSSL
Guido Falsi [Thu, 8 Jun 2017 15:54:46 +0000 (17:54 +0200)]
BuildSystem: Add patches to allow building with recent LibreSSL

Add some #if defined checks which allow building against LibreSSL.
These patchess come from OpenBSD ports:

ASTERISK-27043 #close
Reported by: OpenBSD ports

Change-Id: I2f6c08a5840b85ad4d2b75370b947ddde7a9a572

3 years agoCFLAGS for BIND8 support
David M. Lee [Tue, 6 Jun 2017 19:54:43 +0000 (14:54 -0500)]
CFLAGS for BIND8 support

Some systems (like macOS) require BIND_8_COMPAT to be defined so that
the nameser libraries are, well, BIND8 compatible.

Change-Id: If79fc27a64f90de1835b5aa3aadfa9be22bd16b0

3 years agoMerge "CHANGES: correct version for a new option 'refer_blind_progress'"
Jenkins2 [Thu, 8 Jun 2017 16:18:18 +0000 (11:18 -0500)]
Merge "CHANGES: correct version for a new option 'refer_blind_progress'"

3 years agoBuildSystem: Fix build on FreeBSD due to missing crypt.h
Guido Falsi [Thu, 8 Jun 2017 15:36:00 +0000 (17:36 +0200)]
BuildSystem: Fix build on FreeBSD due to missing crypt.h

FreeBSD does not include a crypt.h include file. Definitions for
crypt() and crypt_r() are in unistd.h

ASTERISK-27042 #close

Change-Id: Ib307ee5e384870c6af50efa89fb73722dd0c3a7e

3 years agochan_pjsip: Update device state when in early media.
Joshua Colp [Wed, 7 Jun 2017 20:19:05 +0000 (20:19 +0000)]
chan_pjsip: Update device state when in early media.

The chan_pjsip module uses a calculation approach for
determining device state. This means that in situations
where we would expect device state to change we need to
tell the core to query. A scenario that was missed is
when early media was signaled.

This change adds the notification for the core to
query device state when we are told that early media
is being provided.


Change-Id: Iafebfd152894966344ff2e950a3cee9f59a3eb6f

3 years agoeventfd: Disable during cross compilation
Sean Bright [Wed, 7 Jun 2017 19:32:57 +0000 (15:32 -0400)]
eventfd: Disable during cross compilation

Reported by Lonnie Abelbeck <> via private e-mail.

Change-Id: Icc80f12b8d8d591e14a8e0ed9f1c02cbd193a89b

3 years agoCHANGES: correct version for a new option 'refer_blind_progress'
Alexei Gradinari [Wed, 7 Jun 2017 16:21:10 +0000 (12:21 -0400)]
CHANGES: correct version for a new option 'refer_blind_progress'

Change-Id: If4817d26a8974610827624fb8a4e56d681d6bf97

3 years agopjsip: Extend 'asymmetric_rtp_codec' option to include us changing.
Joshua Colp [Tue, 6 Jun 2017 12:04:21 +0000 (12:04 +0000)]
pjsip: Extend 'asymmetric_rtp_codec' option to include us changing.

PJSIP support in Asterisk differs from chan_sip in that it
allows media to be sent as-is without transcoding provided
the codecs were negotiated in the SDP. This is allowed
according to the RFC. Support for this differs quite a lot
though and some endpoints do not handle it well.

This change extends the 'asymmetric_rtp_codec' option to
also cover this case. When set to no (the default) the code
behaves as chan_sip does - the best codec is selected and
we will only ever send that, unless we change what we are
sending if the remote side changes. When set to yes we
will send media as-is without transcoding if the codec
has been negotiated in the SDP.


Change-Id: Ib1647f6902a0843e8c435946f831c2159e8d1d51

3 years agoMerge "res_pjsip: Add support for returning only reachable contacts and use it."
Joshua Colp [Wed, 7 Jun 2017 13:33:53 +0000 (08:33 -0500)]
Merge "res_pjsip: Add support for returning only reachable contacts and use it."

3 years agoMerge "channel: ast_write frame wrongly freed after call to audiohooks"
Jenkins2 [Wed, 7 Jun 2017 13:07:10 +0000 (08:07 -0500)]
Merge "channel: ast_write frame wrongly freed after call to audiohooks"

3 years agores_rtp_multicast: Use consistent timestamps when possible
Sean Bright [Tue, 6 Jun 2017 15:04:44 +0000 (11:04 -0400)]
res_rtp_multicast: Use consistent timestamps when possible

When a frame destined for a MulticastRTP channel does not have timing
information (such as when an 'originate' is done), we generate the RTP
timestamps ourselves without regard to the number of samples we are
about to send.

Instead, use the same method as res_rtp_asterisk and 'predict' a
timestamp given the number of samples. If the difference between the
timestamp that we generate and the one we predict is within a specific
threshold, use the predicted timestamp so that we end up with timestamps
that are consistent with the number of samples we are actually sending.

Change-Id: I2bf0db3541b1573043330421cbb114ff0f22ec1f

3 years agores_pjsip: Add support for returning only reachable contacts and use it.
Joshua Colp [Wed, 31 May 2017 15:41:45 +0000 (15:41 +0000)]
res_pjsip: Add support for returning only reachable contacts and use it.

This introduces the ability for PJSIP code to specify filtering flags
when retrieving PJSIP contacts. The first flag for use causes the
query code to only retrieve contacts that are not unreachable. This
change has been leveraged by both the Dial() process and the
PJSIP_DIAL_CONTACTS dialplan function so they will now only attempt
calls to contacts which are not unreachable.


Change-Id: I8233b4faa21ba3db114f5a42e946e4b191446f6c

3 years agoMerge "format: Reintroduce smoother flags"
Jenkins2 [Tue, 6 Jun 2017 13:59:37 +0000 (08:59 -0500)]
Merge "format: Reintroduce smoother flags"

3 years agoMerge "Confbridge: Add "sfu" video mode to bridge profile options."
Joshua Colp [Tue, 6 Jun 2017 12:05:13 +0000 (07:05 -0500)]
Merge "Confbridge: Add "sfu" video mode to bridge profile options."

3 years agoMerge "Add primitive SFU support to bridge_softmix."
Jenkins2 [Tue, 6 Jun 2017 11:57:24 +0000 (06:57 -0500)]
Merge "Add primitive SFU support to bridge_softmix."

3 years agoMerge "res_srtp: Add support for libsrtp2"
Joshua Colp [Tue, 6 Jun 2017 10:01:17 +0000 (05:01 -0500)]
Merge "res_srtp: Add support for libsrtp2"

3 years agochannel: ast_write frame wrongly freed after call to audiohooks
Kevin Harwell [Mon, 5 Jun 2017 16:27:32 +0000 (11:27 -0500)]
channel: ast_write frame wrongly freed after call to audiohooks

ASTERISK-26419 introduced a bug when calling ast_audiohook_write_list in
ast_write. It would free the frame given to ast_write if the frame returned
by ast_audiohook_write_list was different than the given one. The frame give
to ast_write should never be freed within that function. It is the caller's
resposibility to free the frame after writing (or when it its done with it).
By freeing it within ast_write this of course led to some memory corruption

This patch makes it so the frame given to ast_write is no longer freed within
the function. The frame returned by ast_audiohook_write_list is now subsequently
used in ast_write and is freed later. It is freed either after translate if the
frame returned by translate is different, or near the end of ast_write prior to
function exit.

ASTERISK-26973 #close

Change-Id: Ic9085ba5f555eeed12f6e565a638c3649695988b

3 years agoMerge "pbx_builtin: Properly handle hangup during Background"
Joshua Colp [Mon, 5 Jun 2017 13:07:39 +0000 (08:07 -0500)]
Merge "pbx_builtin: Properly handle hangup during Background"

3 years agoMerge "app_confbridge: Race between removing and playing name recording while leaving"
George Joseph [Thu, 1 Jun 2017 19:43:21 +0000 (14:43 -0500)]
Merge "app_confbridge: Race between removing and playing name recording while leaving"

3 years agoMerge "stasis_recording: Correct ast_asprintf error checking"
Jenkins2 [Thu, 1 Jun 2017 16:06:16 +0000 (11:06 -0500)]
Merge "stasis_recording: Correct ast_asprintf error checking"

3 years agoMerge "format_mp3: Re-work menuselect/build issues"
Joshua Colp [Thu, 1 Jun 2017 15:40:51 +0000 (10:40 -0500)]
Merge "format_mp3: Re-work menuselect/build issues"

3 years agoMerge "res_pjsip: New endpoint option "refer_blind_progress""
Jenkins2 [Thu, 1 Jun 2017 15:05:53 +0000 (10:05 -0500)]
Merge "res_pjsip: New endpoint option "refer_blind_progress""

3 years agoMerge "Sqlite3: make busy_timeout configurable."
Jenkins2 [Thu, 1 Jun 2017 14:31:24 +0000 (09:31 -0500)]
Merge "Sqlite3: make busy_timeout configurable."

3 years agoMerge "test_json: Fix test names with reserved words"
Jenkins2 [Wed, 31 May 2017 19:05:59 +0000 (14:05 -0500)]
Merge "test_json:  Fix test names with reserved words"

3 years agopbx_builtin: Properly handle hangup during Background
Sean Bright [Wed, 31 May 2017 16:45:45 +0000 (12:45 -0400)]
pbx_builtin: Properly handle hangup during Background

Before this patch, when a user hung up during a Background, we would
stuff 0xff into a char and attempt a dialplan lookup of it. This caused
problems for some realtime engines which interpreted the value as the
beginning of an invalid UTF-8 sequence.

ASTERISK-19291 #close
Reported by: Andrew Nowrot

Change-Id: I8ca6da93252d61c76ebdb46a4aa65e73ca985358

3 years agochannel / app_meetme: Fix parentheses.
Joshua Colp [Wed, 31 May 2017 09:25:02 +0000 (09:25 +0000)]
channel / app_meetme: Fix parentheses.


Change-Id: Id736b0aa4ec6b6b0f04663d64fa8d151f81fdbed

3 years agostasis_recording: Correct ast_asprintf error checking
Sean Bright [Tue, 30 May 2017 21:07:56 +0000 (17:07 -0400)]
stasis_recording: Correct ast_asprintf error checking

ASTERISK-27021 #close
Reported by: Tim Morgan

Change-Id: I0ac061f040093e806c3b1f4e2340864f3ce4dd75

3 years agoformat: Reintroduce smoother flags
Sean Bright [Sun, 28 May 2017 20:43:12 +0000 (16:43 -0400)]
format: Reintroduce smoother flags

In review 4843 (ASTERISK-24858), we added a hack that forced a smoother
creation when sending signed linear so that the byte order was adjusted
during transmission. This was needed because smoother flags were lost
during the new format work that was done in Asterisk 13.

Rather than rolling that same hack into res_rtp_multicast, re-introduce
smoother flags so that formats can dictate their own options.

Change-Id: I77b835fba0e539c6ce50014a984766f63cab2c16

3 years agoConfbridge: Add "sfu" video mode to bridge profile options.
Mark Michelson [Wed, 24 May 2017 15:09:22 +0000 (10:09 -0500)]
Confbridge: Add "sfu" video mode to bridge profile options.

A previous commit added plumbing to bridge_softmix to allow for an SFU
experience with Asterisk. This commit adds an option to app_confbridge
that allows for a confbridge to actually make use of the SFU video mode.

SFU mode is implemented in a "set it and forget it" kind of way. That
is, when the bridge is created, if SFU mode is enabled, then the video
mode gets set to SFU and cannot be changed. Future improvements may
allow for a hybrid experience (e.g. forward multiple video streams,
specifically those of the most recent talkers), but for this addition,
no such capability is present.

Change-Id: I87bbcb63dec6dbbb42488f894871b86f112b2020

3 years agoAdd primitive SFU support to bridge_softmix.
Mark Michelson [Fri, 5 May 2017 16:56:34 +0000 (11:56 -0500)]
Add primitive SFU support to bridge_softmix.

This sets up the "plumbing" in bridge_softmix to
be able to accommodate Asterisk asking as an SFU
(selective forwarding unit) for conferences.

The way this works is that whenever a channel enters or leaves a
conference, all participants in the bridge get sent a stream topology
change request. The topologies consist of the channels' original
topology, along with video destination streams corresponding to each
participants' source video streams. So for instance, if Alice, Bob, and
Carol are in the conference, and each supplies one video stream, then
the topologies for each would look like so:

Source video(Alice),
Destination Video(Bob),
Destination video (Carol)

Source video(Bob)
Destination Video(Alice),
Destination video (Carol)

Source video(Carol)
Destination Video(Alice),
Destination video (Bob)

This way, video that arrives from a source video stream can then be
copied out to the destination video streams on the other participants'

Once the bridge gets told that a topology on a channel has changed, the
bridge constructs a map in order to get the video frames routed to the
proper destination streams. This is done using the bridge channel's

This change is bare-bones with regards to SFU support. Some key features
are missing at this point:

* Stream limits. This commit makes no effort to limit the number of
  streams on a specific channel. This means that if there were 50 video
  callers in a conference, bridge_softmix will happily send out topology
  change requests to every channel in the bridge, requesting 50+

* Configuration. The plumbing has been added to bridge_softmix, but
  there has been nothing added as of yet to app_confbridge to enable SFU
  video mode.

* Testing. Some functions included here have unit tests.
  However, the functionality as a whole has only been verified by
  hand-tracing the code.

* Selectivenss. For a "selective" forwarding unit, this does not
  currently have any means of being selective.

* Features. Presumably, someone might wish to only receive video from
  specific sources. There are no external-facing functions at the moment
  that allow for users to select who they receive video from.

* Efficiency. The current scheme treats all video streams as being
  unidirectional. We could be re-using a source video stream as a
  desetnation, too. But to simplify things on this first round, I did it
  this way.

Change-Id: I7c44a829cc63acf8b596a337b2dc3c13898a6c4d

3 years agoformat_mp3: Re-work menuselect/build issues
Sean Bright [Tue, 30 May 2017 14:34:34 +0000 (10:34 -0400)]
format_mp3: Re-work menuselect/build issues

Rather than removing format_mp3 from ALL_C_MODS (which caused format_mp3
to not show up in menuselect), use .PHONY targets when the necessary
source files are not present.

Reported by: Tzafrir Cohen

Change-Id: I0a7512c51acc9e86043671795020b0de725bd9e8

3 years agotest_json: Fix test names with reserved words
George Joseph [Tue, 30 May 2017 14:43:49 +0000 (08:43 -0600)]
test_json:  Fix test names with reserved words

Some of the test names were actually reserved words (true, false,
int, null, string, bool).  When the jenkins test results analyzer
does its thing it tries to create a map using the test names as
keys and fails because they're reserved words.

Added "type_" to those test names.

Change-Id: I90d809f46969c78a1c605b736ff0635196a2cf1b

3 years agoMerge "format_mp3: Don't try to build format_mp3 if we don't have sources"
Jenkins2 [Tue, 30 May 2017 11:03:26 +0000 (06:03 -0500)]
Merge "format_mp3: Don't try to build format_mp3 if we don't have sources"

3 years agomanager: Clear the flag on the other channel.
Joshua Colp [Fri, 26 May 2017 16:41:59 +0000 (16:41 +0000)]
manager: Clear the flag on the other channel.

During the channel flag audit an incorrect change was
done. The flag should be cleared on the second channel.


Change-Id: I770c5a389550a2fb5a6ade942fccbb2e1d9199c8

3 years agores_srtp: Add support for libsrtp2
Sean Bright [Fri, 26 May 2017 16:15:42 +0000 (12:15 -0400)]
res_srtp: Add support for libsrtp2

ASTERISK-25294 #close
Reported by: Tzafrir Cohen

ASTERISK-26976 #close
Reported by: Alex

Change-Id: I789b1c3d1ed31365bbd9339fa58ef36f48833c40

3 years agoMerge "asterisk: Audit locking of channel when manipulating flags."
Jenkins2 [Fri, 26 May 2017 14:25:51 +0000 (09:25 -0500)]
Merge "asterisk: Audit locking of channel when manipulating flags."

3 years agoMerge "res_agi: Prevent crash when SET VARIABLE called without arguments"
George Joseph [Fri, 26 May 2017 12:12:16 +0000 (07:12 -0500)]
Merge "res_agi: Prevent crash when SET VARIABLE called without arguments"

3 years agoMerge "res_agi: Allow configuration of audio format of EAGI pipe"
George Joseph [Fri, 26 May 2017 00:01:57 +0000 (19:01 -0500)]
Merge "res_agi: Allow configuration of audio format of EAGI pipe"

3 years agoMerge "res_agi: Fix malformed AGI usage response"
Jenkins2 [Thu, 25 May 2017 20:23:18 +0000 (15:23 -0500)]
Merge "res_agi: Fix malformed AGI usage response"

3 years agoMerge "unittests: Add a unit test that causes a SEGV and..."
Jenkins2 [Thu, 25 May 2017 19:44:35 +0000 (14:44 -0500)]
Merge "unittests:  Add a unit test that causes a SEGV and..."

3 years agoformat_mp3: Don't try to build format_mp3 if we don't have sources
Sean Bright [Thu, 25 May 2017 16:10:00 +0000 (12:10 -0400)]
format_mp3: Don't try to build format_mp3 if we don't have sources

ASTERISK-23951 #close
Reported by: Tzafrir Cohen

Change-Id: Iebf181d44bb735787fde4b5be863c4d7e2478a30

3 years agoSqlite3: make busy_timeout configurable.
Martin Tomec [Tue, 23 May 2017 16:07:53 +0000 (18:07 +0200)]
Sqlite3: make busy_timeout configurable.

Enables runtime configuration of busy_timeout for sqlite databases.
Default timeout remains 1000ms.

ASTERISK-27014 #close

Change-Id: I8921a3aac3c335843be4cb17d2dd0a5c157a36da

3 years agoMerge "res_agi: Clarify 'RECORD FILE' documentation"
Jenkins2 [Wed, 24 May 2017 23:09:33 +0000 (18:09 -0500)]
Merge "res_agi: Clarify 'RECORD FILE' documentation"

3 years agounittests: Add a unit test that causes a SEGV and...
George Joseph [Wed, 24 May 2017 20:50:56 +0000 (14:50 -0600)]
unittests:  Add a unit test that causes a SEGV and...

...that can only be run by explicitly calling it with
'test execute category /DO_NOT_RUN/ name RAISE_SEGV'

This allows us to more easily test CI and debugging tools that
should do certain things when asterisk coredumps.

To allow this a new member was added to the ast_test_info
structure named 'explicit_only'.  If set by a test, the test
will be skipped during a 'test execute all' or
'test execute category ...'.

Change-Id: Ia3a11856aae4887df9a02b6b081cc777b36eb6ed

3 years agoMerge "app_queue: Add QUEUE_RAISE_PENALTY feature"
Joshua Colp [Wed, 24 May 2017 18:04:16 +0000 (13:04 -0500)]
Merge "app_queue: Add QUEUE_RAISE_PENALTY feature"

3 years agoMerge "chan_sip: Better ICE handling for RTCP-MUX"
Jenkins2 [Wed, 24 May 2017 16:41:02 +0000 (11:41 -0500)]
Merge "chan_sip: Better ICE handling for RTCP-MUX"

3 years agoMerge "res_rtp_asterisk: rtcp mux using the wrong srtp unprotecting algorithm"
Jenkins2 [Wed, 24 May 2017 16:25:58 +0000 (11:25 -0500)]
Merge "res_rtp_asterisk: rtcp mux using the wrong srtp unprotecting algorithm"

3 years agoMerge "res_format_attr_h26x: Trim blanks in fmtp attributes"
Jenkins2 [Wed, 24 May 2017 16:02:24 +0000 (11:02 -0500)]
Merge "res_format_attr_h26x: Trim blanks in fmtp attributes"

3 years agores_agi: Allow configuration of audio format of EAGI pipe
Sean Bright [Tue, 23 May 2017 20:42:04 +0000 (16:42 -0400)]
res_agi: Allow configuration of audio format of EAGI pipe

This change allows the format of the EAGI audio pipe to be changed by
setting the dialplan variable 'EAGI_AUDIO_FORMAT' to the name of one of
the loaded formats.

ASTERISK-26124 #close

Change-Id: I7a10fad401ad2a21c68c2e7246fa357d5cee5bbd

3 years agores_agi: Clarify 'RECORD FILE' documentation
Sean Bright [Tue, 23 May 2017 18:33:16 +0000 (14:33 -0400)]
res_agi: Clarify 'RECORD FILE' documentation

Documented the 'beep' option in both the parameters list and the command

ASTERISK-23839 #close

Change-Id: I4970395c922dbdce3f7cf0f56d5b065ec9aa53ea

3 years agores_agi: Prevent crash when SET VARIABLE called without arguments
Sean Bright [Tue, 23 May 2017 18:06:22 +0000 (14:06 -0400)]
res_agi: Prevent crash when SET VARIABLE called without arguments

Explicitly check that the appropriate number of arguments were passed to
SET VARIABLE before attempting to reference them. Also initialize the
arguments array to zeroes before populating it.

ASTERISK-22432 #close

Change-Id: I5143607d80a2724f749c1674f3126b04ed32ea97

3 years agores_agi: Fix malformed AGI usage response
Sean Bright [Tue, 23 May 2017 17:35:25 +0000 (13:35 -0400)]
res_agi: Fix malformed AGI usage response

If the generated XML documentation for a command does not end with a \n,
the postamble of the usage message does not appear on its own line.

ASTERISK-25662 #close

Change-Id: If190f1e9e37fe215fed95897d78d4a6e142b0020

3 years agores_format_attr_h26x: Trim blanks in fmtp attributes
Sean Bright [Tue, 23 May 2017 15:06:02 +0000 (11:06 -0400)]
res_format_attr_h26x: Trim blanks in fmtp attributes

Some devices separate format attributes with a semicolon followed by a
space, so trim blanks before trying to match them.

ASTERISK-27008 #close

Change-Id: Ia44cb2e4fef5c73dc541a29da79cb0e19c22d9cc

3 years agoapp_queue: Fix members showing as being in call when not.
Joshua Colp [Mon, 15 May 2017 20:03:36 +0000 (20:03 +0000)]
app_queue: Fix members showing as being in call when not.

A change was done which added an 'in_call' flag to queue
members that was set to true while talking to an agent.
Unfortunately in practice this does not accurately reflect
whether they are talking to an agent or not. If a Local
channel is involved and a transfer is performed then the
app_queue application would incorrectly think the agent
was still in a call with the caller. This was done to
fix a race condition between an agent becoming available
by device state and the checking of the last call information
for the wrapup time. There was a small window where the
last call information would be the previous value instead
of the new one.

This change goes about fixing the original issue in a
different way by considering the call completed if device
state is received which would make the agent available
and if they are currently in a call. If this occurs the
last call information is updated before the agent becomes
available ensuring that old information is not present
when checking if the member should be called. This also
improves the transfer situation by actually updating
and enforcing the wrapup time.


Change-Id: Ife1cb686e3173b3a6d368601adef9aff69d4beea

3 years agoMerge "res_pjsip_session : fixed wrong From Header number On Re-invite"
Joshua Colp [Tue, 23 May 2017 14:17:13 +0000 (09:17 -0500)]
Merge "res_pjsip_session : fixed wrong From Header number On Re-invite"

3 years agoapp_confbridge: Race between removing and playing name recording while leaving
Robert Mordec [Tue, 23 May 2017 10:45:29 +0000 (12:45 +0200)]
app_confbridge: Race between removing and playing name recording while leaving

When user leaves a conference, its channel calls async_play_sound_file()
in order to play the name announcement and then unlinks the sound file.
The async_play_sound_file() function adds a task to conference playback queue,
which then runs playback_common() function in a different thread.

It leads to a race condition when, in some cases, channel thread may unlink
the sound file before playback_common() had a chance to open it.

This patch creates a file deletion task, that is queued after playback.

ASTERISK-27012 #close

Change-Id: I412f7922d412004b80917d4e892546c15bd70dd3

3 years agores_rtp_asterisk: rtcp mux using the wrong srtp unprotecting algorithm
Kevin Harwell [Mon, 22 May 2017 18:51:40 +0000 (13:51 -0500)]
res_rtp_asterisk: rtcp mux using the wrong srtp unprotecting algorithm

When using rtcp mux if an rtcp payload came in it would still use the srtp
unprotect algorithm instead of the srtp unprotect rtcp method. Since rtcp
data was being passed to the rtp unprotect method this would result in an

This patch ensures that the correct unprotect method is chosen by making
sure the passed in rtcp flag is appropriately set when rtcp mux is enabled
and an rtcp payload is received.

ASTERISK-26979 #close

Change-Id: Ic5409f9d1a267f1d4785fc5aed867daaecca6241

3 years agochan_sip: Better ICE handling for RTCP-MUX
Sean Bright [Fri, 19 May 2017 15:05:36 +0000 (15:05 +0000)]
chan_sip: Better ICE handling for RTCP-MUX

If we are offered or are offering RTCP-MUX, don't consider RTCP ICE
candidates. This confuses certain browsers (current Firefox for
example) and causes intial audio setup delays.

ASTERISK-26982 #close

Change-Id: Ifeaf47e83972fe8dbe58b7fb3d6d1823400cfb91

3 years agoapp_queue: Add QUEUE_RAISE_PENALTY feature
Steve Davies [Fri, 12 May 2017 15:38:27 +0000 (16:38 +0100)]
app_queue: Add QUEUE_RAISE_PENALTY feature

Additional variable to work alongside QUEUE_MAX_PENALTY and QUEUE_MIN_PENALTY,
including an extra parameter in queuerules.conf. This value causes lower
Agent penalty values to "raise up" so that they can join higher penalty agents
and be treated equally after a period of time.

ASTERISK-26995 #close

Change-Id: If1c6421a983667a5ac4c359f6dac25b212b4c459

3 years agoMerge "app_queue: Fix duplicate queue_log entries for EXITEMPTY and ABANDON"
Joshua Colp [Mon, 22 May 2017 10:37:32 +0000 (05:37 -0500)]
Merge "app_queue: Fix duplicate queue_log entries for EXITEMPTY and ABANDON"

3 years agoMerge "app_stream_echo: Added a multi-stream echo application"
Joshua Colp [Mon, 22 May 2017 10:03:05 +0000 (05:03 -0500)]
Merge "app_stream_echo: Added a multi-stream echo application"

3 years agoMerge "core/conversions: Added string to unsigned integer and long conversions"
Jenkins2 [Mon, 22 May 2017 09:59:49 +0000 (04:59 -0500)]
Merge "core/conversions: Added string to unsigned integer and long conversions"

3 years agoMerge "res_hep_rtcp: Add support level to module info"
Jenkins2 [Fri, 19 May 2017 23:19:01 +0000 (18:19 -0500)]
Merge "res_hep_rtcp: Add support level to module info"

3 years agoMerge "AST-2017-004: chan_skinny: Add EOF check in skinny_session"
Jenkins2 [Fri, 19 May 2017 20:08:42 +0000 (15:08 -0500)]
Merge "AST-2017-004: chan_skinny:  Add EOF check in skinny_session"

3 years agoMerge "AST-2017-003: Handle zero-length body parts correctly."
Jenkins2 [Fri, 19 May 2017 19:41:50 +0000 (14:41 -0500)]
Merge "AST-2017-003: Handle zero-length body parts correctly."

3 years agoAST-2017-003: Handle zero-length body parts correctly.
Mark Michelson [Thu, 13 Apr 2017 22:17:36 +0000 (17:17 -0500)]
AST-2017-003: Handle zero-length body parts correctly.

ASTERISK-26939 #close

Change-Id: I7ea235ab39833a187db4e078f0788bd0af0a24fd

3 years agoAST-2017-004: chan_skinny: Add EOF check in skinny_session
George Joseph [Thu, 13 Apr 2017 16:14:48 +0000 (10:14 -0600)]
AST-2017-004: chan_skinny:  Add EOF check in skinny_session

The while(1) loop in skinny_session wasn't checking for EOF so
a packet that was longer than a header but still truncated
would spin the while loop infinitely.  Not only does this
permanently tie up a thread and drive a core to 100% utilization,
the call of ast_log() in such a tight loop eats all available
process memory.

Added poll with timeout to top of read loop

ASTERISK-26940 #close
Reported-by: Sandro Gauci

Change-Id: I2ce65f3c5cb24b4943a9f75b64d545a1e2cd2898

3 years agoAST-2017-002: Ensure transaction key buffer is large enough.
Mark Michelson [Thu, 13 Apr 2017 22:16:42 +0000 (17:16 -0500)]
AST-2017-002: Ensure transaction key buffer is large enough.

ASTERISK-26938 #close

Change-Id: I266490792fd8896a23be7cb92f316b7e69356413

3 years agores_hep_rtcp: Add support level to module info
Sean Bright [Thu, 18 May 2017 21:35:21 +0000 (17:35 -0400)]
res_hep_rtcp: Add support level to module info

Change-Id: I5661478f9cf12d431f730e42be79323b62831e92

3 years agoapp_stream_echo: Added a multi-stream echo application
Kevin Harwell [Mon, 15 May 2017 18:26:50 +0000 (13:26 -0500)]
app_stream_echo: Added a multi-stream echo application

If the channel does not have multi-stream support then this application acts
just like app_echo. If it does have multi-stream support then each stream is
echoed back to itself (one-to-one).

If a "num" is specified, then a new topology is made that contains clones (from
the channel's topology) of all media types that are not equal to the given
"type". If the media type differs then the first stream matching the "type" is
cloned into the new topology and then up to "num" - 1 of the same stream are
also cloned into it. Any additional streams from the original topology matching
the "type" are subsequently ignored (i.e. not added to the new topology).

For this same case when a frame is read from a stream that frame is still
echoed back like before, but now that frame is also echoed out to the
additional streams that matched on the specified "type".

ASTERISK-26997 #close

Change-Id: I254144486734178e196c7f590a26ffc13543ff2c

3 years agocore/conversions: Added string to unsigned integer and long conversions
Kevin Harwell [Mon, 15 May 2017 18:25:43 +0000 (13:25 -0500)]
core/conversions: Added string to unsigned integer and long conversions

Added functions that convert a string to an unsigned integer or unsigned long.
A couple of unit test were also created to test the routines. The reasons for
adding these conversion utilities (and hopefully eventually more) are as

  * Conversion routines are functionally contained with consistent and
    better error checking
  * The function names offer a better description of what is happening
  * It encourages code reuse for easier bug fixing at a single source
  * It's simpler to use
  * It's unit testable

For instance, currently in a lot of places when converting to an integer or
similar the "sscanf" function is used. When using "sscanf" it may not be
immediately clear what's happening as it lacks semantic naming. Limited error
checking is usually done as well. For example, most of the time a check is done
to make sure the value converted, but does not check for overflows or negative
valued conversions when converting unsigned numbers.

Why use/wrap "strtoul" and not "sscanf" then? Primarily, it lacks some of the
built in error handling that "strtoul" has. For instance "strtoul" contains
overflow checks. Less so, but can still factor as reasons, "sscanf" is slightly
more complex in its use. And maybe a bit controversial, but it may be ("big if")
potentially slower than "strtoul" in some cases.

Change-Id: If7eaca4a48f8c7b89cc8b5a1f4bed2852fca82bb

3 years agoMerge "res_pjsip_session.c: Process initial INVITE sooner. (key exists)"
Jenkins2 [Wed, 17 May 2017 16:40:28 +0000 (11:40 -0500)]
Merge "res_pjsip_session.c: Process initial INVITE sooner. (key exists)"

3 years agoMerge "Fix spelling queues.conf.sample file"
Joshua Colp [Wed, 17 May 2017 15:40:11 +0000 (10:40 -0500)]
Merge "Fix spelling queues.conf.sample file"

3 years agoasterisk: Audit locking of channel when manipulating flags.
Joshua Colp [Sat, 13 May 2017 16:40:00 +0000 (16:40 +0000)]
asterisk: Audit locking of channel when manipulating flags.

When manipulating flags on a channel the channel has to be
locked to guarantee that nothing else is also manipulating
the flags. This change introduces locking where necessary to
guarantee this. It also adds helper functions that manipulate
channel flags and lock to reduce repeated code.


Change-Id: I489280662dba0f4c50981bfc5b5a7073fef2db10