diff options
author | Dave Blake <oak99sky@yahoo.co.uk> | 2020-02-23 15:46:59 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-23 15:46:59 +0000 |
commit | ff55d1b8bcaaf4646aa96add3843dbb5b6bcb3b6 (patch) | |
tree | a51338a6e952803d90ba45ab678e83fb43867f4b | |
parent | ddde2cd5bf9baa732e725931d0de3c4ae90c5b18 (diff) | |
parent | ff03a4373de8ac267dd5857d61f5513e728938e7 (diff) |
Merge pull request #17295 from DaveTBlake/AutomountedAccess_Leia
webserver: Fix file access on auto-mounted sources [backport]
-rw-r--r-- | xbmc/network/httprequesthandler/HTTPVfsHandler.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/xbmc/network/httprequesthandler/HTTPVfsHandler.cpp b/xbmc/network/httprequesthandler/HTTPVfsHandler.cpp index cbf5abd159..dd938d6298 100644 --- a/xbmc/network/httprequesthandler/HTTPVfsHandler.cpp +++ b/xbmc/network/httprequesthandler/HTTPVfsHandler.cpp @@ -9,9 +9,11 @@ #include "HTTPVfsHandler.h" #include "MediaSource.h" #include "URL.h" +#include "Util.h" #include "filesystem/File.h" #include "network/WebServer.h" #include "settings/MediaSourceSettings.h" +#include "storage/MediaManager.h" #include "utils/URIUtils.h" CHTTPVfsHandler::CHTTPVfsHandler(const HTTPRequest &request) @@ -39,6 +41,7 @@ CHTTPVfsHandler::CHTTPVfsHandler(const HTTPRequest &request) while (URIUtils::IsInArchive(realPath)) realPath = CURL(realPath).GetHostName(); + // Check manually configured sources VECSOURCES *sources = NULL; for (unsigned int index = 0; index < size && !accessible; index++) { @@ -62,6 +65,19 @@ CHTTPVfsHandler::CHTTPVfsHandler(const HTTPRequest &request) } } } + + // Check auto-mounted sources + if (!accessible) + { + bool isSource; + VECSOURCES removableSources; + g_mediaManager.GetRemovableDrives(removableSources); + int sourceIndex = CUtil::GetMatchingSource(realPath, removableSources, isSource); + if (sourceIndex >= 0 && sourceIndex < static_cast<int>(removableSources.size()) && + removableSources.at(sourceIndex).m_iHasLock != 2 && + removableSources.at(sourceIndex).m_allowSharing) + accessible = true; + } } } |