summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-04-18format_pcm: Correct behavior of fseek and ftell for G.722Sean Bright
There are twice as many samples in the same number of bytes, so redefine some of the G.722 format functions in terms of their PCM counterparts. Change-Id: I6a8c7352624b930a5f2d9e4857f75283fa5dd9f9
2018-04-17Merge "res_musiconhold: Don't restart MOH from beginning after announcement."Jenkins2
2018-04-16res_rtp_asterisk: Add support for receiving and handling NACK requests.Ben Ford
Adds the ability to receive and handle incoming NACK requests if retransmissions are enabled. If retransmissions are enabled, a data buffer is allocated that stores packets being sent. If a NACK request is received, the packet requested for retransmission is sent if it is still in the buffer. In the same request, if any of the following 16 packets are marked as not received, those will be sent as well if available, as outlined in RFC4585. Also changes RTCP RR and SR to use media source SSRC instead of packet source SSRC when determining which instance to use for RTCP reports. For more information, refer to the wiki page: https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements ASTERISK-27806 #close Change-Id: I7f7f124af3b9d5d2fd9cffc6ba8cb48a6fff06ec
2018-04-16Merge "res_pjsip.c: Split ast_sip_push_task_synchronous() to fit expectations."George Joseph
2018-04-16Merge "pjsip_scheduler.c: Add ability to trace scheduled tasks."Jenkins2
2018-04-16Merge "pjsip_scheduler.c: Fix some corner cases."Jenkins2
2018-04-13res_musiconhold: Don't restart MOH from beginning after announcement.Ben Ford
This reverts a problem introduced by the fix for ASTERISK_24329. Now, when an announcement is played while waiting in a queue, music on hold will not restart from the beginning of the sound file and will instead pick up where it left off. However, the incorrect behavior in ASTERISK_24329 is now present again; if an announcement X seconds long is played when music on hold starts, music on hold will start X seconds into the file. ASTERISK-27774 #close Reported by: lvl Change-Id: I86b2885ee7063268f9b9747eddb788336ade989b
2018-04-12pjsip_scheduler.c: Add ability to trace scheduled tasks.Richard Mudgett
When a scheduled task is created you can pass in the AST_SIP_SCHED_TASK_TRACK flag. This new flag causes scheduling events to be logged. Change-Id: I91967eb3d5a220915ce86881a28af772f9a7f56b
2018-04-12res_pjsip.c: Split ast_sip_push_task_synchronous() to fit expectations.Richard Mudgett
ast_sip_push_task_synchronous() did not necessarily execute the passed in task under the specified serializer. If the current thread is any registered pjsip thread then it would execute the task immediately instead of under the specified serializer. Reentrancy issues could result if the task does not execute with the right serializer. The original reason ast_sip_push_task_synchronous() checked to see if the current thread was a registered pjsip thread was because of a deadlock with masquerades and the channel technology's fixup callback (ASTERISK_22936). A subsequent masquerade deadlock fix (ASTERISK_24356) involving call pickups avoided the original deadlock situation entirely. The PJSIP channel technology's fixup callback no longer needed to call ast_sip_push_task_synchronous(). However, there are a few places where this unexpected behavior is still required to avoid deadlocks. The pjsip monitor thread executes callbacks that do calls to ast_sip_push_task_synchronous() that would deadlock if the task were actually pushed to the specified serializer. I ran into one dealing with the pubsub subscriptions where an ao2 destructor called ast_sip_push_task_synchronous(). * Split ast_sip_push_task_synchronous() into ast_sip_push_task_wait_servant() and ast_sip_push_task_wait_serializer(). ast_sip_push_task_wait_servant() has the old behavior of ast_sip_push_task_synchronous(). ast_sip_push_task_wait_serializer() has the new behavior where the task is always executed by the specified serializer or a picked serializer if one is not passed in. Both functions behave the same if the current thread is not a SIP servant. * Redirected ast_sip_push_task_synchronous() to ast_sip_push_task_wait_servant() to preserve API for released branches. ASTERISK_26806 Change-Id: Id040fa42c0e5972f4c8deef380921461d213b9f3
2018-04-12pjsip_scheduler.c: Fix some corner cases.Richard Mudgett
* Fix the periodic interval wander because it may take significant time between the sched thread queueing the task in the serializer and the serializer actually executing the task. The time it takes to actually execute the task was already taken into account. * Pass a schtd ref to the serializer when we queue a scheduled task on the serializer. We don't want it going away on us while it is in the serializer queue. * Skip the scheduled task if the task was canceled between queueing the task to the serializer and the serializer actually executing the task. * Reorder struct ast_sip_sched_task to avoid unnecessary padding. Removed task_id and added next_periodic. * Hold a ref to the passed in serializer so the serializer cannot go away on the scheduled task. ASTERISK_26806 Change-Id: I6c8046b75f6953792c8c30e55b836a4291143f24
2018-04-12pjsip_scheduler.c: Sort "pjsip show scheduled_tasks" output.Richard Mudgett
* A side benefit is that the scheduled tasks are not completely blocked while the CLI command executes. * Adjusted the "Task Name" column width to have more room for longer names. Change-Id: Iec64aa463ee8b10eef90120e00c38b1fb444087e
2018-04-12Merge "res_pjsip_notify.c: enable in-dialog NOTIFY"Jenkins2
2018-04-12Merge "pjsip_scheduler.c: Fix ao2 usage errors."Jenkins2
2018-04-12Merge "Build System: Strip '-std=c99' from CFLAGS provided by libraries."Jenkins2
2018-04-11cdr_mysql: Compile error because MYSQL_PORT definition is missingEvandro Cesar Arruda
If it is not defined, it will add MYSQL_PORT definition. After some research on MySQL/MariaDB development tree, I couldn't find any reference to MYSQL_PORT definition in include files. ASTERISK-27782 #close Change-Id: Ieee56c836fc2e8bd021c456145bba04c6068bb77
2018-04-11res_pjsip_session: Rewrite o= with external_media_address.Chris-Savinovich
It now appends the external IP address on the o= line of the SDP packet. The decision was made to write the numeric IP address as opposed to the RFC that states the FQDN should be used if and when available. We believe the usage of literal IP address will help avoid potential problems. ASTERISK-27614 #close Change-Id: I84f3360f3606b8c4e8d161edb228799ec0b8a302
2018-04-11res_pjsip_notify.c: enable in-dialog NOTIFYNathan Bruning
This patch adds support to send in-dialog SIP NOTIFY commands on chan_pjsip channels, similar to the functionality recently added for chan_sip (ASTERISK_27461). This extends res_pjsip_notify to allow for in-dialog messages. ASTERISK-27697 Change-Id: If7f3151a6d633e414d5dc319d5efc1443c43dd29
2018-04-11Merge "res_pjsip_refer/chan_sip: Fix INVITE with replaces transfer to ↵Jenkins2
ConfBridge"
2018-04-10Merge "chan_sip.c: Fix INVITE with replaces channel ref leak."George Joseph
2018-04-09pjsip_scheduler.c: Fix ao2 usage errors.Richard Mudgett
* Removed several invalid uses of OBJ_NOLOCK. These uses resulted in the 'tasks' container being accessed without a lock in a multi-threaded environment. A recipe for crashes. * Removed needlessly obtaining schtd object references. If the caller providing you a pointer to an object doesn't have a valid reference then you cannot safely get one from it. * Getting a ref to 'tasks' when you aren't copying the pointer into another location is useless. The 'tasks' container pointer is global. * Removed many unnecessary uses of RAII_VAR. * Make ast_sip_schedule_task() name parameter const. ASTERISK_26806 Change-Id: I5c62488e651314e2a1dbc01f5b078a15512d73db
2018-04-09Merge "pjsip / res_rtp_asterisk: Add support for sending REMB"Jenkins2
2018-04-09Merge "res_rtp_asterisk: Fix minimum block word length for REMB."Joshua Colp
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-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-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