summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-11-04res_stasis: Set a video source mode on Stasis created bridgesMatt Jordan
When a bridge is created via ARI (through res_stasis), no video source mode is set by default. As a result, any endpoint sending video media won't ever see any video reflected back to it. This patch defaults a bridge to a 'follow the talker' video mode. Further work can be done to add routes that allow for the video mode to be controlled through the /bridges resource. Change-Id: I7e9d530a5d7a97a4524a9ee4e468e1a6b3443866
2016-11-04main/bridge_channel: Fix channel reference leak on video sourceMatt Jordan
When a channel is made the video source, the bridge holds a reference to it. Whenever the video source changes, that reference is released. However, a ref leak does occur if the channel leaves the bridge (such as being hung up) while it is the video source, as the bridge never releases the ref in such a case. This patch adds a line to the bridge_channel_internal_join routine such that, when a channel finishes its time in the bridge, it notifies the bridge via ast_bridge_remove_video_src that if it is a video source its reference should be released. ASTERISK-26555 #close Change-Id: I3a2f5238a9d2fc49c591f0e65199d782ab0be76a
2016-11-04main/bridge: Add some verbose logging for video source changesMatt Jordan
It's actually quite useful to see the source of a video stream change. This doesn't happen terribly often, even with talk detection - but when it does, it's nice to know which channel is now providing your video stream. As a verbose 5 level message, it shouldn't be terribly spammy or costly to have, and is 'lower level' then most other verbose messages that the bridge system emits. ASTERISK-26555 Change-Id: Ia1c20ecafa9670171fd38bddcf3beccae47fb15c
2016-11-04bridges/bridge_softmix: Remove SSRC changes on join/leave; update video sourceMatt Jordan
WebRTC clients really, really want to know the SSRC of the media they're getting. Changing the SSRC is generally not a good thing. bridge_softmix, starting in Asterisk 12, started changing the SSRC of parties as they joined or left the bridge. With most phones, this isn't a problem: phones just play back the stream they're getting. With WebRTC clients, however, the SSRC is tied to a media stream that may be negotiated. When a new SSRC just shows up, the media can be dropped. As it turns out, the SSRC change shouldn't even be necessary. From the perspective of the client, it's still talking to Asterisk with the same media stream: why indicate that the far party has suddenly changed to a different source of media? This patch opts to just remove the SSRC changes. With this patch, video clients that join/leave a softmix bridge actually get the video stream instead of freaking out. ASTERISK-26555 Change-Id: I27fec098b32e7c8718b4b65f3fd5fa73527968bf
2016-11-04stasis_recording/stored: remove calls to deprecated readdir_r function.Kevin Harwell
The readdir_r function has been deprecated and should no longer be used. This patch removes the readdir_r dependency (replaced it with readdir) and also moves the directory search code to a more centralized spot (file.c) Also removed a strict dependency on the dirent structure's d_type field as it is not portable. The code now checks to see if the value is available. If so, it tries to use it, but defaults back to using the stats function if necessary. Lastly, for most implementations of readdir it *should* be thread-safe to make concurrent calls to it as long as different directory streams are specified. glibc falls into this category. However, since it is possible that there exist some implementations that are not safe, locking has been added for those other than glibc. ASTERISK-26412 ASTERISK-26509 #close Change-Id: Id8f54689b1e2873e82a09d0d0d2faf41964e80ba
2016-11-04Revert "chan_sip: Fix lastrtprx always updated"Kevin Harwell
This reverts commit 93332cb1d0eea18021ea6538237297e627d6e2fc. Unfortunately, the aforementioned commit caused a regression (incoming calls would eventually disconnect). Thus it is being removed. ASTERISK-26523 #close ASTERISK-25270 Change-Id: Ibf5586adc303073a8eac667a4cbfdb6be184a64d
2016-11-03res_stasis: Don't unsubscribe from a NULL bridge.Joshua Colp
A NULL bridge has special meaning in res_stasis for unsubscribing. It means that a subscription to ALL bridges should be removed. This should not be done as part of the normal subscription management in the res_stasis channel loop. ASTERISK-26468 Change-Id: I6d5bea8246dd13a22ef86b736aefbf2a39c15af0
2016-11-03chan_ooh323: Fix infinite loop on read second part of H.225 packetAlexander Anikin
Fix logic on read second part of H.225 packet. There was infinite loop on wrong connections due to read before poll. Change-Id: I42b4bf75c46e4a5c5df5c5ca1f0bd74b8944e7ff
2016-11-03pjproject_bundled: Fix issue with libasteriskpj needing libresampleGeorge Joseph
libresample is only needed by pjproject if we're building pjsua, which we only do if TEST_FRAMEWORK is selected. It's required by pjsua to process audio which is needed by some testsuite tests. Unfortunately, pjproject relies on a newer version of libresample than the version that ships by most distros so we need to compile the version that's bundled with pjproject. Since we only need it for pjsua, we DON'T want it's symbols exposed when we actually build asterisk. There was a problem however... TEST_FRAMEWORK is only known AFTER we've already run ./configure on both asterisk and pjproject but pjproject's ./configure needs to test it to know whether to set up to build libresample or not. The previous way of figuring this out was to always tell ./configure "yes" but not actually build the library. This caused an issue where building libasteriskpj was being told to include libresample but it wasn't actually there. The solution is to still do a default pjproject configure during an asterisk ./configure but if makeopts or menuselect.makeopts changes subsequently, we now reconfigure pjproject, taking into account the current state of TEST_FRAMEWORK. Previously, if makeopts or menuselect.makeopts changed, only a recompile of pjproject was done. Change-Id: I9b5d84c61384a3ae07fe30e85c49698378cc4685
2016-11-02Merge "chan_sip: add missing account code" into 13Joshua Colp
2016-11-02chan_sip: add missing account codeSebastian Gutierrez
Added missing account to AMI event of sip show peers ASTERISK-26176 #close Change-Id: Ieb6c2c80a838a1b59c82103eba4c63ba238dc482
2016-11-02rtp_engine: Allow more than 32 dynamic payload types.Alexander Traud
The dynamic range (96-127) allows 32 RTP Payload Types. RFC 3551 section 3 allows to reassign other ranges. Consequently, when the dynamic range is exhausted, you can go for "rtp_pt_dynamic = 35" (or 0) in asterisk.conf. This enables the range 35-63 (or 0-63) giving room for another 29 (or 64) payload types. ASTERISK-26311 #close Change-Id: I7bc96ab764bc30098a178b841cbf7146f9d64964 (cherry picked from commit 9ac53877f688c06acaa7c377f15da8770e4ee88b)
2016-11-02app_dial: Fix incorrect device state when channel is picked up.Joshua Colp
Given the scenario where multiple channels are dialed using Dial() but the caller is picked up using PickupChan() all outgoing channels except the channel specified to PickupChan() would be marked as ringing until the call had been hung up. When using the PickupChan application the channel executing the application is swapped into place of another channel. As part of this process the channel is answered. The Dial application has explicit logic which checks if the channel is answered, cancels all other outgoing channels, and bridges. This logic is different than the normal logic that is executed when an outgoing channel is answered. This different logic failed to publish dial events stating that the other outgoing channels had been canceled. As a result references to the outgoing channels were held onto by the dial masquerade process until the call had been ended and the channels had gone away. This would result in the channels appearing in the "core show channels" list despite not being present anymore and would also result in incorrect device state. This change makes it so that this logic also publishes dial events stating that the other outgoing channels have been canceled. ASTERISK-26549 Change-Id: Iea7168e6e82f7d4609ec0366153804e4f55ea64f
2016-11-02Merge "res_pjsip_sdp_rtp: Limit number of formats to defined maximum." into 13Joshua Colp
2016-11-02Merge "bundled pjproject: Fix DNS write to freed memory." into 13Joshua Colp
2016-11-02Merge "res/stasis: Add CLI commands for displaying/debugging ARI apps" into 13Joshua Colp
2016-11-01Merge "define PATH_MAX for HURD" into 13zuul
2016-11-01Merge "netsock.c: fix includes for HURD" into 13zuul
2016-11-01Merge "pjproject_bundled: Fix compile of pjsua so it handles audio" into 13zuul
2016-11-01Merge "codecs.conf.sample: Add sample and option descriptions for ↵Joshua Colp
codec_opus" into 13
2016-11-01bundled pjproject: Fix DNS write to freed memory.Richard Mudgett
PJPROJECT 2.5.5 introduced a race condition with the -r5349 IPv6 DNS patch. The patch below fixes a write to freed memory under cartain DNS lookup conditions. 0006-r5477-svn-backport-Fix-DNS-write-on-freed-memory.patch ASTERISK-26516 Reported by: Richard Mudgett Change-Id: Ifdfae9ecf1e41b53080f33aab44ce1a220f349c5
2016-11-01Merge "chan_sip: Incorrect display option Outbound reg. retry 403" into 13zuul
2016-11-01res_pjsip_sdp_rtp: Limit number of formats to defined maximum.Joshua Colp
The res_pjsip_sdp_rtp module did not restrict the number of formats added to a media stream in the SDP to the defined limit. If allow=all was used with additional loaded codecs this could result in the next media stream being overwritten some. This change restricts the module to limit it to the defined maximum and also increases the maximum in our bundled pjproject. ASTERISK-26541 #close Change-Id: I0dc5f59d3891246cafa2f3df5ec406f088559ee8
2016-11-01netsock.c: fix includes for HURDTzafrir Cohen
ASTERISK-25070 Change-Id: I43bf94d2d36d3d8a8d0df40cd6c027d65a462814
2016-11-01define PATH_MAX for HURDTzafrir Cohen
PATH_MAX is not guaranteed to be defined. In parctice, all but the HURD define it to a constant. It is indeed not safe to assume there won't be longer paths and Asterisk generally does err safely on such cases. So even for HURD we'll just pretend PATH_MAX is 4096. ASTERISK-25070 #close Change-Id: I53d10ba18c34c132bcb640a5fd8e0da1d9b22db3
2016-11-01codecs.conf.sample: Add sample and option descriptions for codec_opusKevin Harwell
codecs.conf.sample was missing codec opus's configuration options, descriptions, and examples. This patch adds the configuration options and examples to codecs.conf.sample that can be used with codec_opus. ASTERISK-26538 #close Change-Id: I1d89bb5e01d3e3b5bd78951b8dd0ff077a83dc8b
2016-11-01chan_sip: Incorrect display option Outbound reg. retry 403Grachev Sergey
If in sip.conf (general section) set option register_retry_403=no, the command "sip show settings" return value: Outbound reg. retry 403:0 If in sip.conf (general section) set option register_retry_403=yes, the command "sip show settings" return value: Outbound reg. retry 403:-1 * In static char "sip show settings" for "Outbound.reg. retry 403" option use AST_CLI_YESNO ASTERISK-26476 #close Change-Id: I3c14272f05f1067bd2aeaa8b3ef9cf8fcb12dcf9
2016-11-01res/stasis: Add CLI commands for displaying/debugging ARI appsMatt Jordan
This patch adds three new CLI commands: - ari show apps: list the registered ARI applications - ari show app: show detailed information about an ARI application - ari set debug: dump events being sent to an ARI application Note that while these CLI commands live in the res_stasis module, we use the 'ari' family for these commands. This was done as most users of Asterisk aren't aware of the semantic differences between ARI and res_stasis, and some 'ari' CLI commands already exist. ASTERISK-26488 #close Change-Id: I51ad6ff0cabee0d69db06858c13f18b1c513c9f5
2016-10-31pjproject_bundled: Fix compile of pjsua so it handles audioGeorge Joseph
In order for pjsua and its python binding to actually negotiate audio for the testsuite tests, it needs g711 and resample. The pj* libraries themselves do not. Unfortunately, pjproject relies on a brand new libresample that most distros don't ship so we need to use the libresample already bundled with pjproject. Only the pjsua executable and the _pjsua.so python library are linked with it so it shouldn't interfere with asterisk itself. Also it was pointed out that apply_patches couldn't handle multiple patches that depended on each other during the dry-run, so the dry-run was removed. Change-Id: I24f397462b486dcdde0dcafe40e6c55a6593f098
2016-10-31manager: Add documentation for NewConnectedLine event.Etienne Lessard
The NewConnectedLine event has been added by commit fe7671f, but the documentation was missing. ASTERISK-26537 #close Change-Id: I7fc331f18caa28492da9303e576f70884ca8c9e6
2016-10-31Merge "bundled pjproject: Crashes while resolving DNS names." into 13Joshua Colp
2016-10-31Merge "astobj2: Declare private variable data_size for AO2_DEBUG only." into 13zuul
2016-10-30vector: Prevent NULL argument to memcpy.Corey Farrell
Headers declare that memcpy does not accept NULL argument for the first two parameters. Add a conditional block to prevent memcpy and ast_free from running on vectors with NULL element array. ASTERISK-26526 #close Change-Id: I988a476bb5fcfcbd3f6d6c6b3e7769e4f9629b71
2016-10-29astobj2: Declare private variable data_size for AO2_DEBUG only.Corey Farrell
Every ao2 object contains storage for a private variable data_size, though the value is never read if AO2_DEBUG is disabled. This change makes the variable conditional, reducing memory usage. ASTERISK-26524 #close Change-Id: If859929e507676ebc58b0f84247a4231e11da07f
2016-10-28pjproject_bundled: Fix issue where "/version.mak" wasn't foundGeorge Joseph
main/Makefile includes third-party/pjproject/build.mak but doesn't set PJDIR beforehand so "include $(PJDIR)/version.mak" evaluates to "/version.mak". Fix is to set PJDIR in main/Makefile before the include. Change-Id: I0f7c67d60209049056fe9c4b041bf0463aa95604
2016-10-28Merge "Fix shutdown crash caused by modules being left open." into 13zuul
2016-10-28bundled pjproject: Crashes while resolving DNS names.Richard Mudgett
PJPROJECT 2.5.5 introduced a race condition with the -r5349 IPv6 DNS patch. The patches below fix the DNS lookup race condition crash caused by attempting to send the same message twice for the single DNS lookup. 0006-r5471-svn-backport-Various-fixes-for-DNS-IPv6.patch 0006-r5473-svn-backport-Fix-pending-query.patch The patch below removes a cached DNS response from the hash table when another thread is referencing the old entry. The table still contained the entry when it was destroyed which can result in inexplicable crashes. 0006-r5475-svn-backport-Remove-DNS-cache-entry.patch ASTERISK-26344 #close Reported by: Ian Gilmour ASTERISK-26387 #close Reported by: Harley Peters Change-Id: I17fde80359e66f65a91341ceca58d914d0f61cc4
2016-10-28SAC documentation: don't specify transports for endpoints and registrationsRusty Newton
Removing explicit transport definition for endpoints and registrations. It isn't necessary and isn't generally advised. ASTERISK-26514 #close Change-Id: Ifdec5e631962438a4683600968dfa4bfd15909fb
2016-10-28Merge "res_pjsip_sdp_rtp: Fix address family of explicit media_address." into 13Joshua Colp
2016-10-28Fix shutdown crash caused by modules being left open.Corey Farrell
It is only safe to run ast_register_cleanup callbacks when all modules have been unloaded. Previously these callbacks were run during graceful shutdown, making it possible to crash during shutdown. ASTERISK-26513 #close Change-Id: Ibfa635bb688d1227ec54aa211d90d6bd45052e21
2016-10-27Merge "pjsip: Fix a few media bugs with reinvites and asymmetric payloads." ↵Joshua Colp
into 13
2016-10-27Merge "res_pjsip_caller_id: Fix crash on session timers UPDATE on inbound ↵zuul
calls." into 13
2016-10-27Merge "pjproject_bundled: Remove usage of tar's --strip-components option" ↵zuul
into 13
2016-10-27Update for 13.12.113.12.1Mark Michelson
2016-10-27Merge "app_voicemail: Clear voice mailbox in MailboxExists and ↵zuul
MAILBOX_EXISTS." into 13
2016-10-27app_voicemail: Clear voice mailbox in MailboxExists and MAILBOX_EXISTS.Joshua Colp
When executing the MailboxExists dialplan application and MAILBOX_EXISTS dialplan function the passed in temporary voice mailbox was not cleared, causing it to try to free garbage. ASTERISK-26503 #close Change-Id: Ie21ccfa1b80b9c59318e596f6b8e17da2b5a7cb3
2016-10-27pjproject_bundled: Remove usage of tar's --strip-components optionGeorge Joseph
Older versions of tar don't support the --strip-components option so instead of doing 'tar --strip-components=1 -C source', we now just untar to the tarball's root directory (pjproject-<version>) and rename that directory to 'source'. Also fixed an issue where the pjproject source directory is a hard coded absolute pathname. ASTERISK-26510 #close ASTERISK-22480 #close Change-Id: I9ec92952507a91ff4e4d01e0149e09fd8e8f32b0
2016-10-27res_pjsip_caller_id: Fix crash on session timers UPDATE on inbound calls.Joshua Colp
The res_pjsip_caller_id module wrongly assumed that a saved From header would always exist on sessions. This is true until an inbound call is received and a session timer causes an UPDATE to be sent. In this case there will be no saved From header and a crash will occur. This change makes it fall back to the From header of the outgoing request if no saved From header is present. ASTERISK-26307 #close Change-Id: Iccc3bc8d243b5ede9b81abf960292930c908d4fa
2016-10-26Merge "test_astobj2_thrash: Fix multithreaded issues" into 13Joshua Colp
2016-10-26Merge "chan_pjsip: segfault on already disconnected session" into 13Joshua Colp