Commit Graph

6564 Commits

Author SHA1 Message Date
Richard Mudgett
0c03eab962 res_pjsip_refer/chan_sip: Fix INVITE with replaces transfer to ConfBridge
There is a problem when an INVITE-with-Replaces transfer targets a channel
in a ConfBridge.  The transfer will unconditionally swap out the
ConfBridge channel.  Unfortunately, the ConfBridge state will not be aware
of this change.  Unexpected behavior will happen as a result since
ConfBridge channels currently can only be replaced by a masquerade and not
normal bridge channel moves.

* We just need to pretend that the channel isn't in a bridge (like other
transfer methods already do) so the transfer channel will masquerade into
the ConfBridge channel.

Change-Id: I209beb0e748fa4f4b92a576f36afa8f495ba4c82
2018-04-06 16:12:57 -06:00
Joshua Colp
0f6431e8e4 app_confbridge / bridge_softmix: Add ability to configure REMB interval.
This change adds a configuration option to app_confbridge which can be
used to set the interval at which we will send a combined REMB (remote
estimated maximum bitrate) frame to sources of video. The bridging API
has also been extended slightly to allow setting this so bridge_softmix
can use it.

ASTERISK-27786

Change-Id: I0e49eae60f369c86434414f3cb8278709c793c82
2018-04-03 08:13:11 -06:00
George Joseph
df7277ac5d Merge "main: Update copyright notice with year 2018" 2018-04-02 10:14:15 -05:00
Jenkins2
c66fde8247 Merge "BuildSystem: With external editline, do not require libs for internal editline." 2018-04-02 08:36:01 -05:00
Jenkins2
0718964e32 Merge "core: Create main/options.c." 2018-04-02 08:31:08 -05:00
Kevin Harwell
48ef239a01 Merge "res_rtp_asterisk: Add support for raising additional RTCP messages." 2018-03-29 15:19:17 -05:00
Kevin Harwell
d8a2ced3ad Merge "main/indications: Use ast_cli_completion_add for all completions." 2018-03-29 15:06:45 -05:00
Jenkins2
7b744bac60 Merge "Add data buffer API to store packets." 2018-03-29 13:38:02 -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
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
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
Corey Farrell
318bf45928 main/indications: Use ast_cli_completion_add for all completions.
Change-Id: I371be01f178fb542a9fbe8d97e7ae21aa4d82c36
2018-03-23 02:28:10 -04: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
Jenkins2
fa892d8dfd Merge "core: Stop using AST_INLINE_API for allocator functions." 2018-03-21 10:46:30 -05: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
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
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
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
Corey Farrell
2c1ad2f510 main/test: Use ast_cli_completion_add.
Change-Id: I5133ff2ba4e030f9733fb3d050c863d72a22ae6b
2018-03-19 15:41:45 -04:00
Jenkins2
5843a19797 Merge "loader: Convert reload_classes to built-in modules." 2018-03-19 12:53:12 -05:00
Jenkins2
19196a98d0 Merge "main/cdr: Use ast_cli_completion_add for CDR channel completion." 2018-03-19 06:17:42 -05:00
Corey Farrell
8c25a72d57 main/bridge: Use ast_cli_completion_add.
Change-Id: I3775a696d6a57139fdf09651ecb786bcf1774509
2018-03-17 19:48:54 -04:00
Corey Farrell
5b40441197 core: Minor cleanup of ast_el_read_char.
* Define CHAR_T_LIBEDIT and CHAR_TO_LIBEDIT based on
  HAVE_LIBEDIT_IS_UNICODE.  This avoids needing to repeatedly use
  conditional blocks, eliminates having multiple function prototypes.
* Remove parenthesis from return values.
* Add missing code block brackets {}.
* Reduce use of 'else' conditional statements where possible.

Change-Id: I4315328ebea2f62641faf6881de2ac20a9f9d08e
2018-03-17 18:32:40 -04:00
Corey Farrell
1136a22a1e main/translate: Use ast_cli_completion_add.
Change-Id: I0e2402660e54d91f74ab0804c62a5b1925577413
2018-03-17 03:25:17 -04:00
Corey Farrell
91ac95993e main/taskprocessor: Use ast_cli_completion_add.
Change-Id: Ie5f812a988ed811fd11967151932de62bc131b48
2018-03-17 03:00:45 -04:00
Corey Farrell
3ad56aa929 main/config: Use ast_cli_completion_add for reload completion.
Change-Id: Ia3fa4c03f2285a1ec8814bbe7f4624ead9111ad1
2018-03-17 01:55:53 -04:00
Corey Farrell
9e335f22e7 aco: Use ast_cli_completion_add for 'config show help'.
In addition this removes:
* RAII_VAR usage
* Duplicate check of pos
* Unneeded arguments.

Change-Id: I2da8eac2670d1d8d6474c04037129804f55ebf39
2018-03-17 01:55:16 -04:00
Corey Farrell
4d1c9d8711 core: Stop using AST_INLINE_API for allocator functions.
This replaces AST_INLINE_API allocators in utils.h with real functions
implemented in astmm.c.  Associated macro's are also moved from utils.h
to astmm.h.

Remove menuselect conflicts between MALLOC_DEBUG and DEBUG_CHAOS as they
can now be combined.

This has multiple benefits:
* Simplifies asterisk/utils.h by removing inline functions and use of
  the logger.
* Removal of these inline functions decreases size of Asterisk and
  module binaries by 1% or more.
* Puts memory management functions together with and without
  MALLOC_DEBUG enabled, simplifying management of the code.
* Enables DEBUG_CHAOS for ASTMM_REDIRECT and bundled pjproject.

Change-Id: If9df4377f74bdbb627461b27a473123e05525887
2018-03-17 01:06:33 -04:00
Joshua Colp
d5bfba60d2 Merge "astobj2_container: Use ast_cli_completion_add for container names." 2018-03-16 19:09:48 -05:00
Jenkins2
6df575541b Merge "main/ccss: Use ast_cli_completion_add for core id." 2018-03-16 19:07:58 -05:00
Jenkins2
6c4719fc2a Merge "main/channel: Use ast_cli_completion_add for channeltypes." 2018-03-16 10:51:38 -05:00