Commit Graph

28553 Commits

Author SHA1 Message Date
Joshua Colp 47de0ee4f6 pjsip: Support dual stack automatically.
This change adds support for dual stack automatically. No
configuration is required and the IP address and version
in the SIP messages and SDP will be automatically changed
based on the transport over which the message is being
sent. RTP usage has also been changed to listen on both
IPv4 and IPv6 simultaneously to allow media to flow, and
to allow ICE support on both simultaneously. This also
allows failover between IPv6 and IPv4 to work as expected.

ASTERISK-26309 #close

Change-Id: I235a421d8f9a326606d861b449fa6fe3a030572d
2016-10-23 13:52:18 +00:00
Joshua Colp 082078de3e Merge "res/ari: Add the Asterisk EID field to outgoing events" into 14 2016-10-18 05:38:35 -05:00
zuul 243633d26d Merge "menuselect: invalid test for GTK2" into 14 2016-10-17 23:55:30 -05:00
zuul ec79e97c38 Merge "app_queue: Added initialization for "context" parameter" into 14 2016-10-17 16:27:47 -05:00
Tzafrir Cohen 47ba379e4c menuselect: invalid test for GTK2
configuire.ac was only checking for the existence of pkg-config
and not the gtk2 package itself.  Now it calls AST_PKG_CONFIG_CHECK
for gtk+-2.0.

ASTERISK-26356 #close

Change-Id: I8079d515d6ea99f9ab320a7eaa71c2aaa101ccd5
2016-10-17 12:36:02 -05:00
George Joseph 230dd6f9af pjproject_bundled: Add patch to address SSL crash
Addresses crashes when an attempt is made to operate on an SSL socket
after the socket has been closed.

ASTERISK-26477 #close

Change-Id: I421305b357558b4f9e690210dc0f4831ef4b3002
2016-10-17 11:55:46 -05:00
Leandro Dardini ef8c54238c app_queue: Added initialization for "context" parameter
When using Asterisk Realtime Architecture, empty fields are skipped and the
default values are used. If the "context" parameter in queue was set and then
cleared from the database, the old value remains in memory and it continues
to be used. This change initialize the "context" parameter with an empty value,
allowing clearing the parameter.

ASTERISK-26462 #close

Change-Id: I64be73d5044ce38dd02408bd0e53de965ef65905
2016-10-17 08:15:13 -05:00
Matt Jordan ebcbc9ee34 res/ari: Add the Asterisk EID field to outgoing events
This patch adds the Asterisk EID field to all outgoing ARI events.
Because this field should be added to all events as they are
transmitted, it is appended to the JSON message just prior to it being
handed off to the application message handler. This makes it somewhat
resilient to both new events being added to ARI, as well as other
potential event transport mechanisms.

ASTERISK-26470 #close

Change-Id: Ieff0ecc24464e83f3f44e9c3e7bd9a5d70b87a1d
2016-10-17 08:14:40 -05:00
Michael Kuron 60c84bbad5 chan_sip: Only send video on outgoing channel if incoming channel supports it
Previously, the settings videosupport=always and videosupport=yes behaved
identically and unconditionally caused a video offer to be sent in the SDP on
an outgoing call. This was a regression introduced with commit
5a1d90e1fb in Asterisk 1.6.1.

This commit restores correct behavior: videosupport=always causes a video offer
to be sent unconditionally, while videosupport=yes will only offer video on an
outbound channel if the incoming channel it is bridged to also supports video.
That way, the device receiving the outgoing call can display the correct user
interface elements for audio or video and will not unnecessarily show a blank
video window on an audio-only call.

ASTERISK-17470 #close

Change-Id: I782f4409d436114dbc97061c3570c0cd24f7c3ae
2016-10-15 05:17:46 -05:00
Joshua Colp 1cfc5119f7 Merge "Fix issues with bundled pjproject cached download." into 14 2016-10-14 18:03:43 -05:00
Joshua Colp 839766f5e1 Merge "Audit ast_json_pack() calls for needed UTF-8 checks." into 14 2016-10-14 14:15:51 -05:00
Joshua Colp 465ba82ea2 Merge "json: Check party id name, number, subaddresses for UTF-8." into 14 2016-10-14 14:15:47 -05:00
Joshua Colp 6d5e11dc91 Merge "json: Add UTF-8 check call." into 14 2016-10-14 14:15:44 -05:00
zuul e4590e61e6 Merge "res_config_mysql: Fix several issues related to recent table changes" into 14 2016-10-14 12:46:46 -05:00
zuul 527d7de647 Merge "aoc.c: Whitespace cleanup" into 14 2016-10-14 11:01:24 -05:00
zuul 22094b267d Merge "app_queue.c: Fix clearing of pause reason string." into 14 2016-10-14 09:41:07 -05:00
Corey Farrell 11bc810c86 Fix issues with bundled pjproject cached download.
Previously when testing I had a preexisting makeopts in ASTTOPDIR.  The
ordering of configure.ac causes --with-externals-cache to be processed
after third-party configure.  In cases where the Asterisk clone is
cleaned it would cause pjproject to be downloaded to /tmp.  This
moves processing of the externals cache and sounds cache to happen
before third-party configure.

This also addresses a possible issue with the third-party Makefile.  If
TMPDIR is set by the environment it would override the path given to
--with-externals-cache.

ASTERISK-26416

Change-Id: Ifab7f35bfcd5a31a31a3a4353cc26a68c8c6592d
2016-10-14 07:47:31 -05:00
Richard Mudgett aba27b5a60 Audit ast_json_pack() calls for needed UTF-8 checks.
Added needed UTF-8 checks before constructing json objects in various
files for strings obtained outside the system.  In this case string values
from a channel driver's peer and not from the user setting channel
variables.

* aoc.c: Fixed type mismatch in s_to_json() for time and granularity json
object construction.

ASTERISK-26466
Reported by: Richard Mudgett

Change-Id: Iac2d867fa598daba5c5dbc619b5464625a7f2096
2016-10-13 18:12:16 -05:00
Richard Mudgett beae5022bf json: Check party id name, number, subaddresses for UTF-8.
* Updated unit test as ast_json_name_number() is now NULL tolerant.

ASTERISK-26466 #close
Reported by: Richard Mudgett

Change-Id: I7d4e14194f8f81f24a1dc34d1b8602c0950265a6
2016-10-13 18:12:16 -05:00
Richard Mudgett 2433a9d0c0 json: Add UTF-8 check call.
Since the json library does not make the check function public we
recreate/copy the function in our interface module.

ASTERISK-26466
Reported by: Richard Mudgett

Change-Id: I36d3d750b6f5f1a110bc69ea92b435ecdeeb2a99
2016-10-13 18:12:16 -05:00
Richard Mudgett b288b8b997 aoc.c: Whitespace cleanup
* In s_to_json() removed unnecessary ast_json_ref() to ast_json_null()
when creating the type json object.  The ref is a noop.

Change-Id: I2be8b836876fc2e34a27c161f8b1c53b58a3889a
2016-10-13 15:59:44 -05:00
Richard Mudgett 857a9936f4 app_minivm.c: Fix malformed ast_json_pack() call.
Change-Id: I082b239022fac462666e52a14a44304748908dc0
2016-10-13 15:58:35 -05:00
Richard Mudgett 030852e1b3 app_queue.c: Fix clearing of pause reason string.
The pause reason is not always cleared when it should be cleared.

* Made set_queue_member_pause() always clear pause reason if not pausing
with a reason string.

Change-Id: I993dad19626ec017478a230e980989438b778c53
2016-10-13 15:55:36 -05:00
George Joseph bb08fae6a9 res_config_mysql: Fix several issues related to recent table changes
Unlike any of the other database drivers, res_config_mysql checks that
the table definition matches the requirements for every insert and
update statement.  Since all requirements are forced to 'char', any
column that isn't a char, like ps_contacts' expiration_time,
qualify_timeout, etc., will throw a warning.  It's kinda harmless but
very misleading.  Since no other driver does those checks on insert
or update, they've been removed from res_config_mysql.  Also, all
the logic that actually attempted to ALTER the table to fix the issue
has been removed.  With the move to alembic, the auto-alter
functionality is not only unnecessary, it's also dangerous.

The other issue is that res_config_mysql calls the mysql_insert_id
function inside store_mysql.  Presumably the intention was to return
the number of rows inserted DESPITE A NOTE IN THE CODE THAT THE VALUE
IS NON_PORTABLE AND MAY CHANGE.  That value is then returned to
config realtime as the number of rows inserted.  Guess what?  The value
changed.  It now only returns the number of rows inserted if there's an
auto increment column on the table, which ps_contacts doesn't have.
Otherwise it returns 0.  So now, the insert worked but we tell config
realtime and sorcery that no rows were inserted.  That call to
mysql_insert_id was removed and we now always return 1 if the insert
succeeded.  We're only inserting 1 row at a time anyway.  If the insert
fails, we still return -1.

ASTERISK-26362 #close
Reported-by: Carlos Chavez

Change-Id: I83ce633efdb477b03c8399946994ee16fefceaf4
2016-10-12 16:48:52 -05:00
zuul 8ff4d75e9e Merge "bundled_pjproject: Add tests for programs used by the Makefile, et al." into 14 2016-10-12 11:15:22 -05:00
Torrey Searle 8d2d6361ff res_fax: Fix a tight race condition causing fax to crash in audio fallback
When T.38 gets rejected and G711 failback occurs there is a period of
time where neither AST_FAX_TECH_T38 nor AST_FAX_TECH_AUDIO is set,
leading to a crash.

Change-Id: Icc3f457b2292d48a9d7843dac0028347420cc982
2016-10-12 06:54:02 -05:00
zuul 07a84b39fe Merge "Add text of cdr directory into README.md for ast-db-manage" into 14 2016-10-11 22:10:59 -05:00
zuul 357134fef1 Merge "audiohooks: Remove redundant codec translations when using audiohooks" into 14 2016-10-11 18:09:13 -05:00
zuul 615f911f2d Merge "vector: After remove element recheck index" into 14 2016-10-11 17:39:55 -05:00
Rodrigo Ramírez Norambuena bbbd43924f Add text of cdr directory into README.md for ast-db-manage
Change-Id: I68321c4bea50730c39fdb486e5f23aeadd1ad636
2016-10-11 17:07:07 -05:00
zuul 7a74c649a0 Merge "app_dial: Add the "Q" option to set the cause on unanswered channels" into 14 2016-10-11 15:36:58 -05:00
zuul dd6d6a55fe Merge "astobj2: Add backtrace to log_bad_ao2." into 14 2016-10-11 13:22:39 -05:00
George Joseph 90f8ba8800 app_dial: Add the "Q" option to set the cause on unanswered channels
The "Q" option will set the cause on the unanswered channels when
another channel answers.  It overrides the default of
ANSWERED_ELSEWHERE.

NOTE:  chan_sip does not support setting the cause on a CANCEL to
anything other than ANSWERED_ELSEWHERE.

ASTERISK-26446 #close

Change-Id: I71742e0919aaa16784c30a2b2e73fbeed7672e47
2016-10-11 12:05:48 -05:00
Joshua Colp 1da75f9f78 Merge "res_rtp_asterisk: Fix infinite DTMF issue when switching to P2P bridge" into 14 2016-10-11 07:32:02 -05:00
Badalyan Vyacheslav 012074d46b vector: After remove element recheck index
Small fix. It is necessary to double-check
the index that we just removed because there
is a new element.

ASTERISK-26453 #close

Change-Id: Ib947fa94dc91dcd9341f357f1084782c64434eb7
2016-10-11 06:43:27 -05:00
Joshua Colp 1347384b67 Merge "cel_odbc: Fix memory leak on module unload" into 14 2016-10-11 05:36:29 -05:00
zuul 2f4fa4f545 Merge "logger: Prevent output of verbose messages initiated from rasterisk." into 14 2016-10-10 22:43:23 -05:00
Torrey Searle e193217f1a res_rtp_asterisk: Fix infinite DTMF issue when switching to P2P bridge
If a bridge switched to P2P when a DTMF was in progress it
was possible for the DTMF to continue being sent indefinitely.

Change-Id: I7e2a3efe0d59d4b214ed50cd0b5d0317e2d92e29
2016-10-10 17:00:10 -05:00
Joshua Colp 603a6cdedb Merge "pjproject_bundled: Add MALLOC_DEBUG capability" into 14 2016-10-10 16:44:46 -05:00
Michael Walton 4cf2d9f261 audiohooks: Remove redundant codec translations when using audiohooks
The main frame read and write handlers in main/channel.c don't use the
optimum placement in the processing flow for calling audiohooks
callbacks, as far as codec translation is concerned. This change places
the audiohooks callback code:
 * After the channel read translation if the frame is not linear before
the translation, thereby increasing the chance that the frame is linear
as required by audiohooks
 * Before the channel write translation if the frame is linear at this
point
This prevents the audiohooks code from instantiating additional
translation paths to/from linear where a linear frame format is already
available, saving valuable CPU cycles

ASTERISK-26419

Change-Id: I6edd5771f0740e758e7eb42558b953f046c01f8f
2016-10-10 11:39:54 -05:00
Badalyan Vyacheslav 188237fa82 res_pjsip_config_wizard: Memory leak in module_unload
Fixed a memory leak. It removes only the first element.
Added a useful feature in vector.h to remove all items
under the CMP through a callback function / macro.

ASTERISK-26453 #close

Change-Id: I84508353463456d2495678f125738e20052da950
2016-10-10 11:05:00 -05:00
Badalyan Vyacheslav c3be9f9fa8 cel_odbc: Fix memory leak on module unload
Change-Id: Ic7a1236eba2408090fdabb5f717b5fa455ead715
2016-10-09 22:32:34 -05:00
George Joseph a0d02f3832 bundled_pjproject: Add tests for programs used by the Makefile, et al.
Added tests for bzip2, tar, patch, sed and nm to configure.ac.

Set DOWNLOAD_TO_STDOUT to a working command line regardless of
whether the download program is wget, curl or fetch.

Added a 'configure.m4' file to the third-party directory which takes
care of calling any third-party project setup.  Had to move some
pjproject_bundled stuff up in configure.ac so it was called before
the third-party configure macro.

The pjproject tarball is now downloaded to the externals_cache_dir if
it was specified on the ./configure command line

Removed regeneration of the pjproject aconfigure file.  It was only
needed for an old patch that no longer applies.

Converted the tests for symbols to explicit tests since we know that
they're now available in the bundled version.  Saves a little time
during configure.

ASTERISK-26416 #close
Reported-by: Corey Farrell

Change-Id: Id1d94251c0155f8dd41b7de7067f35cfbaafbb9b
(cherry picked from commit e6b0053d75)
2016-10-09 21:22:00 -06:00
Corey Farrell 2f2ef9b8a6 logger: Prevent output of verbose messages initiated from rasterisk.
Remote asterisk consoles should only display verbose log messages
created by the daemon.  The first patch for ASTERISK-26410 caused
a couple verbose messages to be printed when the rasterisk process
ended.

ASTERISK-26410

Change-Id: Ie2a1bb3753ad2724c0349ec1a336f52f7117b52a
2016-10-09 22:28:52 -04:00
George Joseph b39bbc0c6a pjproject_bundled: Add MALLOC_DEBUG capability
pjproject_bundled will now use the asterisk memory debugging APIs
if MALLOC_DEBUG is turned on in menuselect.

Because this required stubs for the executable programs and the python
bindings, some Makefile reorganization was needed to properly handle
the dependencies.  As a result, the makefile now individually makes
each of the pjproject libraries separately instead of making them all
in 1 shot.  The only visible change is that there are separate status
lines printed for each library instead oif 1 for all libs.  Also, the
making of the pjproject dependency files was eliminated.  They're not
needed for building unless you're actively modifying pjproject source
files and it makes the build process faster.  Finally, any issues with
parallel builds should be resolved again making the build faster.

Change-Id: Icc5e3d658fbfb00e0a46b44c66dcc2522d5171b0
2016-10-09 18:15:04 -05:00
George Joseph 741c2e1570 alembic: Allow cdr, config and voicemail to exist in the same schema
cdr, config and voicemail are all separate alembic trees.  Because
alembic's default is to use a table named 'alembic_version' to store
the current tree revision, the 3 trees can't exist in the same schema
without stepping on each other.

Now each tree uses 'alembic_version_<tree_name>' as the version table.
Each tree's env.py script now first checks for 'alembic_version'.  If
it finds it AND its revision is in the tree's history, the script
renames it to 'alembic_version_<tree_name>'.  Regardless, the script
then continues with the migration using 'alembic_version_<tree_name>'
and creates that table if it's not found.  The result is that if an
existing 'alembic_version' table was found but it didn't belong to this
tree, it's left alone and 'alembic_version_<tree_name>' is used or
created.

WARNING:  If multiple trees are using the same schema, they MUST NOT
CRU or D any objects with names that might exist in the other trees.
An example would be 'yesno_values' type.  If two trees perform
operations on it, one tree could pull it out from under the other.
Thankfully we currently don't share any names among cdr, config and
voicemail.

NOTE:  Since the env.py scripts in each tree were identical, a common
env.py has been placed in the ast-db-manage directory and a symlink
to it has been placed in each tree directory.

ASTERISK-24311 #close
Reported-by: Dafi Ni

Change-Id: I4d593f000350deb5d21a14fa1e9bc3896844d898
2016-10-07 07:49:35 -05:00
Corey Farrell d236973657 astobj2: Add backtrace to log_bad_ao2.
* Compile __ast_assert_failed unconditionally.
* Use __ast_assert_failed to log messages from log_bad_ao2
* Remove calls to ast_assert(0) that happen after log_bad_ao2 was run.

Change-Id: I48f1af44b2718ad74a421ff75cb6397b924a9751
2016-10-06 16:20:02 -05:00
Alexander Traud 16d9d67329 chan_sip: Honor support of Symmetric Response (rport) for SIP requests.
In the SIP channel driver chan_sip, the default is "auto_force_rport". When no
NAT was detected, for example in case of IPv6, Asterisk uses the IP address
from the headers within the SIP-REGISTER for subsequent SIP signaling. When
the remote party specifies support for Symmetric Response (RFC 3581) via the
parameter "rport", Asterisk should not extract the port from the SIP headers
but reuse the port of the transport. This did not happen because of a typo.

ASTERISK-26438 #close

Change-Id: If6e7891848aaf96666dee5305695f7c6667cd5a6
2016-10-05 04:35:38 -05:00
Joshua Colp 21ee185f57 Merge "Remove "format_ogg_opus: New format"" into 14 2016-09-29 16:14:24 -05:00
Joshua Colp 79adec5d93 Merge "download_externals: Fix issue with re-install" into 14 2016-09-29 15:53:25 -05:00