Commit Graph

31121 Commits

Author SHA1 Message Date
Ben Ford 879743ab8f test_data_buffer.c: Add unit tests for data buffer API.
Added unit tests for the data buffer API. These tests include creating a
data buffer, putting payloads into the buffer, resizing the buffer, and
the nominal case for data buffer usage, which consists of adding
the max number of payloads to the buffer, checking to see if the correct
payloads are present, then adding more payloads and checking again to
see if the previous payloads were replaced or not.

For more information, refer to the wiki page:
https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements

Change-Id: Id5b599aa15a5e61d0ec080f97cd0c57bd07e6f8f
2018-03-28 15:25:38 -05:00
Ben Ford 138e0eff4e Add data buffer API to store packets.
Adds a data buffer with a configurable size that can store different
kinds of packets (like RTP packets for retransmission). Given a number
it will store a data packet at that position relative to the others.
Given a number it will retrieve the given data packet if it is present.
This is purposely a storage of arbitrary things so it can be used not
just for RTP packets but also Asterisk frames in the future if needed.
The API does not internally use a lock, so it will be up to the user of
the API to properly protect the data buffer.

For more information, refer to the wiki page:
https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements

Change-Id: Iff13c5d4795d52356959fe2a57360cd57dfade07
2018-03-28 14:25:21 -06:00
George Joseph a87141ddfd pjproject_bundled: Add patch for pj_atomic crashes
There have been some crashes in the past where something attempts
to use a pj_atomic after it's already been destroyed.  This patch
tries to prevent it by making sure that pj_atomic_destroy sets
its mutex to NULL when it's done.  The pj_mutex functions already check
for a NULL mutex and just return PJ_EINVAL.

Teluu also added some checks to the win32 implementation as well.

Change-Id: Id25f70b79fdedf44ead6e6e1763a4417d3b3f825
2018-03-28 10:32:15 -06:00
Joshua Colp e14b0e960d res_rtp_asterisk: Add support for raising additional RTCP messages.
This change extends the existing AST_FRAME_RTCP frame type to be
able to contain additional RTCP message types, such as feedback
messages. The payload type is contained in the subclass which allows
knowing what is in the frame itself.

The RTCP feedback message type is now handled and REMB[1] messages
are raised with their containing information.

This also fixes a bug where all feedback messages were triggering
video updates instead of just FIR and FUR.

Finally RTCP frames are now passed up through the Asterisk core to
what is handling the channel, mapped appropriately in the case of
bridging, and written to an outgoing stream. Since RTCP frames are
on a per-stream basis this is only done on multistream capable
channels.

[1] https://tools.ietf.org/html/draft-alvestrand-rmcat-remb-03

ASTERISK-27758
ASTERISK-26366

Change-Id: I680da0ad8d5059d5e9655d896fb9d92e9da8491e
2018-03-27 08:39:00 -06:00
Florian Floimair 455cee99ae main: Update copyright notice with year 2018
Change-Id: I2d80bc5edf940fab914cba3d8a0fa0b5eb2a3148
2018-03-27 15:27:09 +02:00
Jenkins2 a4a5b8d562 Merge "loader: Reserve space for additional pointers in ast_module_info." 2018-03-26 11:44:53 -05:00
Guido Falsi 48190c7f93 core: fix getopt(3) usage
Setting optind = 0 is forced to 1 in glibc implementation, but
causes option parsing to be flawed in other implementations, for
example on FreeBSD.

ASTERISK-27773 #close

Change-Id: Ia548e69f8302e9754dbbedb6bc451c0700c66f61
2018-03-26 06:50:54 -06:00
Alexander Traud 07cf6b1437 install_prereq: Add Slackware (somehow).
ASTERISK-27770

Change-Id: Ib87e0483c785542238cfe34c1e884d5a31edfaab
2018-03-23 19:15:09 +01:00
Alexander Traud 307a295d00 install_prereq: Add Gentoo Linux.
ASTERISK-27769

Change-Id: Ieb13293cd67481f3a33f58f6f7c8c3ee1e338e7a
2018-03-23 15:13:44 +01:00
Corey Farrell 318bf45928 main/indications: Use ast_cli_completion_add for all completions.
Change-Id: I371be01f178fb542a9fbe8d97e7ae21aa4d82c36
2018-03-23 02:28:10 -04:00
Jenkins2 625d53a129 Merge "bridge_softmix: Clear "talking" when a channel is put on hold" 2018-03-22 08:47:19 -05:00
Russell Bryant 75715b95b4 app_originate: Add async option.
Add an option to make app_originate not wait for the created channel
to answer.

Change-Id: I7fc2facd77079abc6321f44e8bcd4e39298de2ae
Requested-by: Frederic Steinfels <fst@highdefinition.ch>
Signed-off-by: Russell Bryant <russell@russellbryant.net>
2018-03-22 13:22:23 +00:00
Alexander Traud 4f33f56a72 BuildSystem: pjsip_evsub_set_uas_timeout was not used (part 2).
The previous change was not complete.

ASTERISK-27435

Change-Id: I11082c14c0ef9c6af8c995084a6851337ea2a90f
2018-03-22 13:27:52 +01:00
Jenkins2 1c4be05f05 Merge "Revert "BuildSystem: In NetBSD, the Python Programming Language is python-X.Y."" 2018-03-22 05:44:30 -05:00
Alexander Traud d6fda173a4 BuildSystem: With external editline, do not require libs for internal editline.
ASTERISK-27761

Change-Id: Ib17a7415297a210cfcdbf149e4df9b6edadbfab6
2018-03-22 11:43:18 +01:00
Corey Farrell a6d58c518a core: Create main/options.c.
This creates a separate source to 'own' symbols related to options.h and
paths.h.  This significantly reduces the number of exports created by
main/asterisk.o.  This change is required to eventually be able to
link unmodified Asterisk sources to utilities and/or stand-alone tests.

ASTERISK~26245

Change-Id: I5cf184f4757f9363b80c9e678bdc35c477122380
2018-03-22 00:33:12 -04:00
George Joseph 745b5134cd Revert "BuildSystem: In NetBSD, the Python Programming Language is python-X.Y."
Something is causing a python2/python3 mismatch on Fedora27.

PYTHON='/usr/bin/python2'
PYTHONDEV_CFLAGS='-I/usr/include/python3.6m '
PYTHONDEV_INCLUDE='-I/usr/include/python3.6m '
PYTHONDEV_LIB='-lpython3.6m '
PYTHONDEV_LIBS='-lpython3.6m '

This reverts commit be0e9920b6.

Change-Id: I86dd102eb3ead199fe89178cdbadb36b4e2cfd1b
2018-03-21 18:25:58 -06:00
Jenkins2 fa892d8dfd Merge "core: Stop using AST_INLINE_API for allocator functions." 2018-03-21 10:46:30 -05:00
Jenkins2 39ba6aacf8 Merge "rtp: Add REMB RTP property and set it on PJSIP video RTP." 2018-03-21 10:38:32 -05:00
Jenkins2 e45e8466f1 Merge "chan_sip: Peers with distinct source ports don't match, regardless of transport." 2018-03-21 09:42:54 -05:00
Jenkins2 46b35fa17d Merge "func_channel: Delete dead CHANNEL_TRACE code" 2018-03-21 06:26:09 -05:00
Corey Farrell 411915af28 loader: Reserve space for additional pointers in ast_module_info.
This creates 4 reserved pointers in case we need additional dependency
management fields.

Change-Id: If991ec99b779df1b2dfbd38ce1a0cd79f9e01821
2018-03-20 20:44:23 -04:00
Kevin Harwell cf73a4203f bridge_softmix: Clear "talking" when a channel is put on hold
This patch clears the talking flag from the channel (if already set), and
notifies listeners when that channel is put on hold. Note however, if the
endpoint continues to send audio frames and these are received by the bridge
then that channel will be put back into a "talking" state even though they
are on hold.

ASTERISK-27755 #close

Change-Id: I930e16c4662810f9f02043d69062f88173c5e2ef
2018-03-20 14:34:11 -06:00
Alexander Traud bfefde5b07 BuildSystem: For consistency, avoid extra libs to be empty.
AST_EXT_LIB_CHECK has several optional parameters. When an optional parameter
is left empty, [] is used to indicate this. However, this is done in the script
./configure only then, when a further parameter is not empty. For example, when
no extra libraries are needed to test the checked library, parameter 5 is not
mentioned. Except parameter 6 and higher are used, then parameter 5 must be
empty.

However, this general rule was broken
* four times for parameter 5 (extra libs) and
* three times for parameter 4 (header)
as found via the Regular Expression \[\]\). In case of parameter 5, all cases
were changed, because that happened for no reason. In case of parameter 4, an
[] improves readability actually. Therefore for parameter 4, the only case which
did not do it was changed. All this aims to create more consistency: Only do
something different if there is a reason to do so.

Change-Id: I037ef170cf1ad94497151a9ea5071a31c656cafe
2018-03-20 17:53:19 +01:00
Joshua Colp f03b984724 Merge "core: Remove additional symbols." 2018-03-20 11:44:06 -05:00
Jenkins2 60a06fbd1d Merge "core: Remove dead symbols from asterisk.exports.in." 2018-03-20 11:40:39 -05:00
Jenkins2 f863f1f91b Merge "channel.c: Allow generic plc then channel formats are equal" 2018-03-20 11:16:52 -05:00
George Joseph 05ac34fe85 Merge "BuildSystem: In NetBSD, the Python Programming Language is python-X.Y." 2018-03-20 10:37:57 -05:00
Jenkins2 fcad222d7f Merge "BuildSystem: Instead of $PJPROJECT_LIBS with s, use $PJPROJECT_LIB everywhere." 2018-03-20 10:24:11 -05:00
Jenkins2 b68dae189d Merge "main/sounds: Use ast_cli_completion_add." 2018-03-20 10:09:26 -05:00
Ivan Poddubny 8bd5980e14 func_channel: Delete dead CHANNEL_TRACE code
The functions behind the flag and the flag itself were removed
from Asterisk 12 as incompatible with the new architecture.

Change-Id: I058493ef7a53ee290fd225bbcbb07bf46b623ccf
2018-03-20 15:58:38 +01:00
Joshua Colp dc2ce3ce32 Merge "named_acl: Use ast_cli_completion_add." 2018-03-20 09:51:41 -05:00
Joshua Colp 1a2f12e288 Merge "manager: Use ast_cli_completion_add for completion generators." 2018-03-20 09:36:56 -05:00
Joshua Colp e3a5874c12 Merge "main/test: Use ast_cli_completion_add." 2018-03-20 09:18:57 -05:00
Jenkins2 c1344d3f77 Merge "core: Minor cleanup of ast_el_read_char." 2018-03-20 08:47:15 -05:00
Joshua Colp 06424ebde1 Merge "aco: Use ast_cli_completion_add for 'config show help'." 2018-03-20 08:31:49 -05:00
Jenkins2 716e2d46e7 Merge "main/config: Use ast_cli_completion_add for reload completion." 2018-03-20 08:20:54 -05:00
Jenkins2 bf9631ea0b Merge "main/translate: Use ast_cli_completion_add." 2018-03-20 07:58:00 -05:00
Joshua Colp 650f561bbb Merge "main/taskprocessor: Use ast_cli_completion_add." 2018-03-20 07:38:03 -05:00
Jenkins2 5f5bb31f74 Merge "main/bridge: Use ast_cli_completion_add." 2018-03-20 07:29:24 -05:00
Jenkins2 ffc20301fa Merge "stringfields: Remove MALLOC_DEBUG fields from struct ast_string_field_mgr." 2018-03-20 06:58:56 -05:00
Jenkins2 beab57a576 Merge "BuildSystem: Enable Advanced Linux Sound Architecture (ALSA) in NetBSD." 2018-03-20 06:45:35 -05:00
Joshua Colp 0bfc83ee4f Merge "BuildSystem: Remove unused dependency on libltdl." 2018-03-20 06:37:09 -05:00
Joshua Colp 297cf20c7d Merge "BuildSystem: Check for header file of OGG." 2018-03-20 06:30:02 -05:00
Corey Farrell 040bb21771 core: Remove additional symbols.
Remove symbols that are depreacated and replaced:
* ast_channel_datastore_alloc
* ast_channel_datastore_free
* ast_channel_cmpwhentohangup
* ast_channel_setwhentohangup
* config_text_file_save
* devstate2str
* ast_device_state_changed
* ast_device_state_changed_literal
* ast_verbose_get_by_module

Remove unused symbols:
* channelreloadreason2txt (last used in Asterisk 12).

Remove unused ast_options flags:
* AST_OPT_FLAG_END_CDR_BEFORE_H_EXTEN / ast_opt_end_cdr_before_h_exten
* AST_OPT_FLAG_VERBOSE_MODULE / ast_opt_verb_module
* AST_OPT_FLAG_INITIATED_SECONDS

Change-Id: I841255995d195f8efc1ed47af9c7a2f131c08645
2018-03-19 18:00:20 -04:00
Corey Farrell de77cf8698 core: Remove dead symbols from asterisk.exports.in.
* dahdi_chan_name
* dahdi_chan_name_len
* dahdi_chan_mode
* __manager_event
* dialed_interface_info

Added comment about __progname and environ being needed for FreeBSD to
prevent accidental removal in the future.

Change-Id: I3ae026bc541cd9cb572be2ffa95fc359547642b5
2018-03-19 17:59:59 -04:00
Corey Farrell 201762f161 named_acl: Use ast_cli_completion_add.
Change-Id: I317a82de976bbdbfe4352c243e32a7bb8f66c377
2018-03-19 17:49:00 -04:00
Corey Farrell 645203a422 main/sounds: Use ast_cli_completion_add.
Change-Id: I140e1137906bbfcdb61c0c6304159be459ad873e
2018-03-19 17:45:09 -04:00
George Joseph 5d097f8236 channel.c: Allow generic plc then channel formats are equal
If the two formats on a channel are equal, we don't transcode and since
the generic plc needs slin to work, it doesn't get invoked.

* A new configuration option "genericplc_on_equal_codecs" was added
  to the "plc" section of codecs.conf to allow generic packet loss
  concealment even if no transcoding was originally needed.
  Transcoding via SLIN is forced in this case.

ASTERISK-27743

Change-Id: I0577026a179dea34232e63123254b4e0508378f4
2018-03-19 15:36:09 -06:00
Corey Farrell 8d01ec572d manager: Use ast_cli_completion_add for completion generators.
Change-Id: I658141c6ec490a3e866b02d2afea757928ceaabf
2018-03-19 16:26:56 -04:00