aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Blake <oak99sky@yahoo.co.uk>2020-02-23 15:46:59 +0000
committerGitHub <noreply@github.com>2020-02-23 15:46:59 +0000
commitff55d1b8bcaaf4646aa96add3843dbb5b6bcb3b6 (patch)
treea51338a6e952803d90ba45ab678e83fb43867f4b
parentddde2cd5bf9baa732e725931d0de3c4ae90c5b18 (diff)
parentff03a4373de8ac267dd5857d61f5513e728938e7 (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.cpp16
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;
+ }
}
}