summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-11-16Merge "res/ari/resource_bridges: Add the ability to manipulate the video ↵zuul
source" into 13
2016-11-16Merge "Revert "Revert "channel: Use frame deferral API for safe sleep.""" ↵Joshua Colp
into 13
2016-11-16Merge "Revert "Revert "autoservice: Use frame deferral API""" into 13Joshua Colp
2016-11-16Merge "Revert "Revert "AGI: Only defer frames when in an interception ↵zuul
routine.""" into 13
2016-11-16Merge "Revert "Revert "Add API for channel frame deferral.""" into 13zuul
2016-11-16Merge "apps/app_echo: Only relay a single video source change frame" into 13zuul
2016-11-16Merge "Add X.509 subject alternative name support to TLS certificate ↵Joshua Colp
verification." into 13
2016-11-16Merge "cli: Fix ast_el_read_char to work with libedit >= 3.1" into 13Joshua Colp
2016-11-16Merge "file.c/__ast_file_read_dirs: Fix issues on filesystems without ↵Joshua Colp
d_type" into 13
2016-11-15file.c/__ast_file_read_dirs: Fix issues on filesystems without d_typeGeorge Joseph
One of the code paths in __ast_file_read_dirs will only get executed if the OS doesn't support dirent->d_type OR if the filesystem the particular file is on doesn't support it. So, while standard Linux systems support the field, some filesystems like XFS do not. In this case, we need to call stat() to determine whether the directory entry is a file or directory so we append the filename to the supplied directory path and call stat. We forgot to truncate path back to just the directory afterwards though so we were passing a complete file name to the callback in the dir_name parameter instead of just the directory name. The logic has been re-written to only create a full_path if we need to call stat() or if we need to descend into another directory. Change-Id: I54e4228bd8355fad65200c6df3ec4c9c8a98dfba
2016-11-15Add X.509 subject alternative name support to TLS certificateMaciej Szmigiero
verification. This way one X.509 certificate can be used for hosts that can be reached under multiple DNS names or for multiple hosts. Signed-off-by: Maciej Szmigiero <mail@maciej.szmigiero.name> ASTERISK-25063 #close Change-Id: I13302c80490a0b44c43f1b45376c9bd7b15a538f
2016-11-14pjproject: Use a much higher limit for PJ_ICE_MAX_CHECKSMatt Jordan
The PJ_ICE_MAX_CHECKS constant is used by pjproject to determine how many pairs of local/remote candidates will be made. If for some reason we reach this upper bound, ICE will generally fail and no media will flow between the browser and Asterisk. This patch makes PJ_ICE_MAX_CHECKS set to the total possible number of pairs of candidates we'd theoretically allow, which is PJ_ICE_MAX_CAND^2. Prior to this patch, we simply multiplied PJ_ICE_MAX_CAND by two; on systems with multiple interfaces (I blame Docker), this is far too low to allow WebRTC calls to succeed. Setting this to be PJ_ICE_MAX_CAND^2 allowed WebRTC calls to succeed even when the system Asterisk was running on had quite a few virtual interfaces. Change-Id: Icd4f17de0ac9d3a83dddfc8bf1cb7616bc107d55
2016-11-14apps/app_echo: Only relay a single video source change frameMatt Jordan
In 9785e8d0, app_echo was updated to relay video source updates to the channel for the purposes of displaying video in WebRTC tests. Unfortunately, this can cause a Kafkaesque nightmare if two or more Local channels are in a bridge together where their ends are in app_echo. When this situation occurs, a video update sent into app_echo will cause the video update to be relayed to the other Local channels, causing another round of video updates, etc. In not much time at all, the channel length queues will be overwhelmed, channel alert pipes will fail, and all hell will break loose as Asterisk merrily continues to throw more video update requests onto the channels. This patch updates app_echo to *only* relay a single video update. Once a video update has been made, all further video updates are dropped. This meets the intended purpose of the original patch: if we get a video update and we're in app_echo, go ahead and ask the sender to update themselves. However, once we've got that video stream sync'd up, don't keep spamming the world. Change-Id: I9210780b08d4c17ddb38599d1c64453adfc34f74
2016-11-14res/ari/resource_bridges: Add the ability to manipulate the video sourceMatt Jordan
In multi-party bridges, Asterisk currently supports two video modes: * Follow the talker, in which the speaker with the most energy is shown to all participants but the speaker, and the speaker sees the previous video source * Explicitly set video sources, in which all participants see a locked video source Prior to this patch, ARI had no ability to manipulate the video source. This isn't important for two-party bridges, in which Asterisk merely relays the video between the participants. However, in a multi-party bridge, it can be advantageous to allow an external application to manipulate the video source. This patch provides two new routes to accomplish this: (1) setVideoSource: POST /bridges/{bridgeId}/videoSource/{channelId} Sets a video source to an explicit channel (2) clearVideoSource: DELETE /bridges/{bridgeId}/videoSource Removes any explicit video source, and sets the video mode to talk detection ASTERISK-26595 #close Change-Id: I98e455d5bffc08ea5e8d6b84ccaf063c714e6621
2016-11-14Revert "Revert "channel: Use frame deferral API for safe sleep.""George Joseph
This reverts commit 58c88cfbaa80cb43419cde9186d643d1c5d24baf. Change-Id: I72692e2b2e83ef6da9390075ff20b138b2c374b6
2016-11-14Revert "Revert "autoservice: Use frame deferral API""George Joseph
This reverts commit 1df434e2b4bd7cc34b9b4addf405a3caa7ac16b8. Change-Id: Id2b8a8bccbb4bbdd82b792275d4cd6f32563e401
2016-11-14Revert "Revert "AGI: Only defer frames when in an interception routine.""George Joseph
This reverts commit 6be5d8de0da7e804544507f70382425af9a07b3f. Change-Id: I4b548137f52ae0686d8f09e21496b778d1c6a797
2016-11-14Revert "Revert "Add API for channel frame deferral.""George Joseph
This reverts commit 6b5a7ced136b7178ae0b2ba39221eba1cd2e37c9. Change-Id: I61d1dbb2e69e1977f684b7dfc8e98211024e1cd1
2016-11-14Merge "res_pjsip.c: Rework endpt_send_request() req_wrapper code." into 13zuul
2016-11-14cli: Fix ast_el_read_char to work with libedit >= 3.1George Joseph
Libedit 3.1 is not build with unicode on as a default and so the prototype for the el_gets callback changed from expecting a char buffer to accepting a wchar buffer. If ast_el_read_char isn't changed, the cli reads garbage from teh terminal. Added a configure test for (*el_rfunc_t)(EditLine *, wchar_t *) and updated ast_el_read_char to use the HAVE_ define to detemrine whether to use char or wchar. ASTERISK-26592 #close Change-Id: I9099b46f68e06d0202ff80e53022a2b68b08871a
2016-11-14Merge "Fix closing rtp ports after call finished in chan_unistim." into 13Joshua Colp
2016-11-14Merge "res_pjsip: Fix tdata leaks in off nominal paths." into 13Joshua Colp
2016-11-11Fix closing rtp ports after call finished in chan_unistim.Igor Goncharovskiy
Fix ASTERISK-26565 by adding ast_rtp_instance_stop before rtp instance destroy for chan_unistim. Also several fixes for displayed text translation. Change-Id: If42a03eea09bd1633471406bdc829cf98bf6affc
2016-11-11Merge "res_pjsip_sdp_rtp: Reject offer of required SRTP without res_srtp." ↵Joshua Colp
into 13
2016-11-10Merge "build: Fix default values for some SANITIZER options" into 13zuul
2016-11-10res_pjsip.c: Rework endpt_send_request() req_wrapper code.Richard Mudgett
* Don't hold the req_wrapper lock too long in endpt_send_request(). We could block the PJSIP monitor thread if the timeout timer expires. sip_get_tpselector_from_endpoint() does a sorcery access that could take awhile accessing a database. pjsip_endpt_send_request() might take awhile if selecting a transport. * Shorten the time that the req_wrapper lock is held in the callback functions. * Simplify endpt_send_request() req_wrapper->timeout code. * Removed some redundant req_wrapper->timeout_timer->id assignments. Change-Id: I3195e3a8e0207bb8e7f49060ad2742cf21a6e4c9
2016-11-10res_pjsip: Fix tdata leaks in off nominal paths.Richard Mudgett
Change-Id: Ie83e06e88c2d60157775263b07e40b61718ac97b
2016-11-10res_pjsip_registrar_expire.c: Remove extra linefeed in debug message.Richard Mudgett
Change-Id: I1f9adb911f23376503396ec8867e8005b755eb94
2016-11-10res_pjsip_sdp_rtp: Reject offer of required SRTP without res_srtp.Joshua Colp
When optimistic SRTP was on it was possible for us to still set up a call without an audio stream if an offer was received with required SRTP. This change makes it so this scenario will now fail with a 488 response. ASTERISK-26575 Change-Id: I7d14187037681f48879bd20319ac79d0877318f3
2016-11-10app_queue: Add mention of 'ABANDON' variable to CHANGES.Joshua Colp
ASTERISK-26558 Change-Id: I1127010181e79c8ac291f72f036cb8e430dc7f7e
2016-11-10Merge "Revert "autoservice: Use frame deferral API"" into 13George Joseph
2016-11-10Merge "Revert "Add API for channel frame deferral."" into 13George Joseph
2016-11-10Merge "Revert "AGI: Only defer frames when in an interception routine."" into 13George Joseph
2016-11-10Merge "Revert "channel: Use frame deferral API for safe sleep."" into 13George Joseph
2016-11-10Revert "Add API for channel frame deferral."George Joseph
This reverts commit 9231a56cf3d6f5eca1bf2d37d827453400690773. Multiple testsuite failures were detected after the fact. Change-Id: I3bac8d7c3ddb69a4ddf6c5d6de0ffa5ff7ff3af7
2016-11-10Revert "AGI: Only defer frames when in an interception routine."George Joseph
This reverts commit 5c10091f3d1430c6fc04015226f8c3e3aa9d8282. Multiple testsuite failures were detected after the fact. Change-Id: I397a841acc17ae230c512449cd6bed89d2ef3b73
2016-11-10Revert "autoservice: Use frame deferral API"George Joseph
This reverts commit 2e3a3545754749de21873bfdc6d1a40ec7d8893f. Multiple testsuite failures were detected after the fact. Change-Id: Ia45fa4633fae74dca345b24bb6722737c63035de
2016-11-10Revert "channel: Use frame deferral API for safe sleep."George Joseph
This reverts commit 44f7e252397fd87420b3374df26941d7436401b3. Multiple testsuite failures were detected after the fact. Change-Id: I56299087da22128a95f0c8f3955f740890d7ca65
2016-11-10Merge "app_queue: new variable set when abandoned" into 13Joshua Colp
2016-11-09build: Fix default values for some SANITIZER optionsGeorge Joseph
2 of the sanitizers didn't have default values so in systems that don't support sanitizers menuselect would spit out warnings. They were harmless but confusing. They've now been set to "0". Change-Id: I08dc495e3b83f1feac3160b421f538c375fc5d58
2016-11-09Merge "res_pjsip_session: Do not call session supplements when it's too ↵George Joseph
late." into 13
2016-11-08app_queue: new variable set when abandonedSebastian Gutierrez
sets the variable ABANDONED to TRUE if the call was not answered. ASTERISK-26558 Change-Id: I4729af9bff4eba436d8a776afd3374065d0036d3
2016-11-08res_pjsip_session: Do not call session supplements when it's too late.Mark Michelson
res_pjsip_sesssion was hooking into transaction and invite state changes. One of the reasons for doing so was due to the PJSIP_EVENT_TX_MSG event. The idea was that we were hooking into the message sending process, and so we should call session supplements to alter the outgoing message. In reality, this event was meant to indicate that the message either a) had already been sent, or b) required a DNS lookup and would be sent when the DNS query completed. In case (a), this meant we were altering an already-sent request/response for no reason. In case (b), this potentially meant we could be trying to alter a request/response at the same time that the DNS resolution completed. In this case, it meant we might be stomping on memory being used by the thread actually sending the message. This caused potential crashes and memory corruption. This patch removes the calls to session supplements from the case where the PJSIP_EVENT_TX_MSG event occurs. In all of these cases, trying to alter the message at this point is too late, and it can cause nothing but harm to try to do it. Because there were no longer any calls to the handle_outgoing() function, it has been removed. Change-Id: Ibcc223fb1c3a237927f38754e0429e80ee301e92
2016-11-08channel: Use frame deferral API for safe sleep.Mark Michelson
This is another case where manual frame deferral can be replaced with centralized routines instead. Change-Id: I42cdf205f8f29a7977e599751a57efbaac07c30e
2016-11-08autoservice: Use frame deferral APIMark Michelson
Rather than use manual frame deferral, just let the channel API do it for us. ASTERISK-26343 Change-Id: I688386f36e765dbc07be863943a43f26bd5eac49
2016-11-08AGI: Only defer frames when in an interception routine.Mark Michelson
AGI recently was modified to defer important frames. This was because when AGI was used in a connected line interception routine, the resulting connected line frame would end up getting discarded by the AGI. However, this caused bad behavior in other cases. Specifically, during a transfer, if someone attempted to manually set the Caller ID on a channel in an AGI, the deferred connected line frame would end up overwriting what had been manually set in the AGI. Since the initial issue was specific to interception routines, this change removes the manual frame deferral from AGI and instead uses the new frame deferral API in interception routines. ASTERISK-26343 #close Reported by Morton Tryfoss Change-Id: Iab7d39436d0ee99bfe32ad55ef91e9bd88db4208
2016-11-08Merge "automon: restore mixing of the both channels after recording stops" ↵zuul
into 13
2016-11-08Merge "Add API for channel frame deferral." into 13zuul
2016-11-08Merge "chan_ooh323: reset rrq count on gk registration" into 13Joshua Colp
2016-11-08Merge "chan_ooh323: Fixes to work right with Cisco devices" into 13Joshua Colp