summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-04-09Merge "app_confbridge / bridge_softmix: Add ability to configure REMB interval."Joshua Colp
2018-04-09Merge "Build System: Fixes for configure script."Joshua Colp
2018-04-09Merge "app_originate: Add async option."Joshua Colp
2018-04-09Merge "res_rtp_asterisk: Queue video update on picture loss indication."Jenkins2
2018-04-09Build System: Enable python3 compatibility.Corey Farrell
* Consistently use spaces in rest-api-templates/asterisk_processor.py. * Exclude third-party from docs/full-en_US.xml. * Add docs/full-en_US.xml to .gitignore. * Use list() to convert python3 view. * Use python3 print function. * Replace cmp() with equivalent equation. * Replace reference to out of scope subtype variable with name parameter. * Use unescaping triple bracket notation in mustache templates where needed. This causes behavior of Python2 to be maintained when using Python3. * Fix references to has_websocket / is_websocket in res_ari_resource.c.mustache. * Update calculation of has_websocket to use any(). * Use unicode mode for writing output file in transform.py. * Replace 'from swagger_model import *' with explicit import of required symbols. I have not tested spandspflow2pcap.py or voicemailpwcheck.py, only the print syntax has been fixed. Change-Id: If5c5b556a2800d41a3e2cfef080ac2e151178c33
2018-04-06res_pjsip_refer/chan_sip: Fix INVITE with replaces transfer to ConfBridgeRichard Mudgett
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-06pjsip / res_rtp_asterisk: Add support for sending REMBJoshua Colp
This change allows chan_pjsip to be given an AST_FRAME_RTCP containing REMB feedback and pass it to res_rtp_asterisk. Once res_rtp_asterisk receives the frame a REMB RTCP feedback packet is constructed with the appropriate contents and sent to the remote endpoint. ASTERISK-27776 Change-Id: Ic53f821c1560d8924907ad82c4d9c0bc322b38cd
2018-04-06Merge "res_pjsip: Update authenticate_qualify documentation."Jenkins2
2018-04-05res_rtp_asterisk: Fix minimum block word length for REMB.Joshua Colp
The minimum block word length is actually 4, not 5. Change-Id: I878542218225aed72c72bdf1b856fc822cd2d649
2018-04-05res_rtp_asterisk: Queue video update on picture loss indication.Joshua Colp
The previous payload specific feedback handling was very single minded in that it just assumed everything should trigger a video update. This was changed but the handling of picture loss indication was not added. The result was that video may not flow. This change adds it explicitly in. Change-Id: I1894be02e39ee10a0af841b5a1dca5f0ec7d60b6
2018-04-05chan_sip.c: Fix INVITE with replaces channel ref leak.Richard Mudgett
Given the below call scenario: A -> Ast1 -> B C <- Ast2 <- B 1) A calls B through Ast1 2) B calls C through Ast2 3) B transfers A to C When party B transfers A to C, B sends a REFER to Ast1 causing Ast1 to send an INVITE with replaces to Ast2. Ast2 then leaks a channel ref of the channel between Ast1 and Ast2. Channel ref leaks are easily seen in the CLI "core show channels" output. The leaked channels appear in the output but you can do nothing with them and they never go away unless you restart Asterisk. * Properly account for the channel refs when imparting a channel into a bridge when handling an INVITE with replaces in handle_invite_replaces(). The ast_bridge_impart() function steals a channel ref but the code didn't account for how many refs were held by the code at the time and which ref was stolen. * Eliminated RAII_VAR in handle_invite_replaces(). ASTERISK-27740 Change-Id: I7edbed774314b55acf0067b2762bfe984ecaa9a4
2018-04-04res_pjsip: Update authenticate_qualify documentation.Richard Mudgett
Change-Id: I3811de0014b1ffe96d4a3b49cddd5d4ca02ee5d4
2018-04-04app_agent_pool.c: Fix off nominal ref leak.Richard Mudgett
Change-Id: Ib427ffc2c802620eaafb08b1c2a17dddd8fb8eb6
2018-04-04Build System: Strip '-std=c99' from CFLAGS provided by libraries.Corey Farrell
Asterisk requires GNU C extensions. On some systems certain libraries may incorrectly push -std=c99 into CFLAGS, thus breaking the build. This change causes that flag to be stripped so the Asterisk build is not broken by those libraries. This change is made for both pkgconfig and tool based libraries. ASTERISK-27629 #close Change-Id: I13389613b194abbac77becf90cd950dc168704db
2018-04-03Build System: Fixes for configure script.Corey Farrell
* Replace all 'else if' statements with 'elif'. * Use loop to detect versioned lua headers and libraries. The loop for detecting lua fixes a bug where LUA_INCLUDE would be appended with the directory of every lua version after the first one is found. Change-Id: I3276f9aee955014108345be6092f51c932b43a0f
2018-04-03app_confbridge / bridge_softmix: Add ability to configure REMB interval.Joshua Colp
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-03Merge "install_prereq: Add Gentoo Linux."Joshua Colp
2018-04-03Merge "install_prereq: Add Slackware (somehow)."Jenkins2
2018-04-02Merge "res_pjsip: Correct usages of pjproject's timer heap"Jenkins2
2018-04-02Merge "pjroject_bundled: Add already-destroyed check to tsx_timer_callback"Jenkins2
2018-04-02res_pjsip: Correct usages of pjproject's timer heapGeorge Joseph
Fix some timer heap initializations and cancels to try and prevent crashes and timer heap issues. Change-Id: I64885d190fa22097d1b55987091375541e57a7ee
2018-04-02Merge "main: Update copyright notice with year 2018"George Joseph
2018-04-02pjroject_bundled: Add already-destroyed check to tsx_timer_callbackGeorge Joseph
There have been cases that when the transaction timer callback is called the tsx is already destroyed. This causes a crash. We now check the tsx state and return if the tsx is already destroyed. Change-Id: If93acd5e48d9ca5bb553f2405d5afc836842fe1c
2018-04-02pjproject_bundled: timer: Clean up usage of timer heapGeorge Joseph
Added a new pj_timer_entry_reset function that resets a timer_entry for re-use. Changed direct settings of timer_entry fields to use pj_timer_entry_init and pj_timer_entry_reset. Fixed issues where timers were being rescheduled incorrectly. Change-Id: I5b624bfbc5c1429117484b9b24567293002148e6
2018-04-02Merge "BuildSystem: With external editline, do not require libs for internal ↵Jenkins2
editline."
2018-04-02Merge "core: Create main/options.c."Jenkins2
2018-04-02Merge "pjproject_bundled: Add patch for pj_atomic crashes"George Joseph
2018-03-29res_pjsip: Fix deadlock on reliable transport shutdown.Richard Mudgett
A deadlock can happen when the PJSIP monitor thread is shutting down a connection oriented transport (TCP/TLS) used by a subscription at the same time as another thread tries to send something for that subscription. The deadlock is between the pjsip monitor thread attempting to get the dialog lock and another thread sending something for that dialog when it tries to get the transport manager lock. * res_pjsip_pubsub.c: Avoid the deadlock by pushing the subscription removal to the subscription serializer. * res_pjsip_registrar.c: Pushed off incoming registration contact removals to a default serializer as a precaution. Removing the contacts involves sorcery access which in this case will involve database access. Depending upon the setup, the database may not be on the same machine and could take awhile. We don't want to hold up the pjsip monitor thread with potentially long access times. ASTERISK-27706 Change-Id: I56b647aea565f24dba33e9e5ebeed4cd3f31f8c4
2018-03-29Merge "res_rtp_asterisk: Add support for raising additional RTCP messages."Kevin Harwell
2018-03-29Merge "main/indications: Use ast_cli_completion_add for all completions."Kevin Harwell
2018-03-29Merge "BuildSystem: pjsip_evsub_set_uas_timeout was not used (part 2)."Jenkins2
2018-03-29Merge "pjsip_transport_events.c: Fix crash using stale transport pointer."Jenkins2
2018-03-29Merge "test_data_buffer.c: Add unit tests for data buffer API."Jenkins2
2018-03-29Merge "Add data buffer API to store packets."Jenkins2
2018-03-29Merge "core: fix getopt(3) usage"Jenkins2
2018-03-28pjsip_transport_events.c: Fix crash using stale transport pointer.Ross Beer
Apparently it is possible for the transport to be destroyed without triggering the transport callback logic. As a result the transport gets destroyed and we have a stale pointer in the active_transports container. * Invoke the transport monitor callback checks when the transport is destroyed in addition to when it is disconnected and shutdown. ASTERISK-27688 Change-Id: Ia9b5469fea8f2b3f2d8476fae6b748a4d23e7261
2018-03-28test_data_buffer.c: Add unit tests for data buffer API.Ben Ford
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-28Add data buffer API to store packets.Ben Ford
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-28pjproject_bundled: Add patch for pj_atomic crashesGeorge Joseph
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-27res_rtp_asterisk: Add support for raising additional RTCP messages.Joshua Colp
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-27main: Update copyright notice with year 2018Florian Floimair
Change-Id: I2d80bc5edf940fab914cba3d8a0fa0b5eb2a3148
2018-03-26Merge "loader: Reserve space for additional pointers in ast_module_info."Jenkins2
2018-03-26core: fix getopt(3) usageGuido Falsi
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-23install_prereq: Add Slackware (somehow).Alexander Traud
ASTERISK-27770 Change-Id: Ib87e0483c785542238cfe34c1e884d5a31edfaab
2018-03-23install_prereq: Add Gentoo Linux.Alexander Traud
ASTERISK-27769 Change-Id: Ieb13293cd67481f3a33f58f6f7c8c3ee1e338e7a
2018-03-23main/indications: Use ast_cli_completion_add for all completions.Corey Farrell
Change-Id: I371be01f178fb542a9fbe8d97e7ae21aa4d82c36
2018-03-22Merge "bridge_softmix: Clear "talking" when a channel is put on hold"HEADmasterJenkins2
2018-03-22app_originate: Add async option.Russell Bryant
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-22BuildSystem: pjsip_evsub_set_uas_timeout was not used (part 2).Alexander Traud
The previous change was not complete. ASTERISK-27435 Change-Id: I11082c14c0ef9c6af8c995084a6851337ea2a90f
2018-03-22Merge "Revert "BuildSystem: In NetBSD, the Python Programming Language is ↵Jenkins2
python-X.Y.""