summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2016-11-04 15:03:52 +0100
committerGitHub <noreply@github.com>2016-11-04 15:03:52 +0100
commitf42d5b6e56d9f6fcab2074b60a4a3f4fe753420b (patch)
treee289cb8376f0e3fdee7461d343216e639103df94 /lib
parenta77e7075f627c82a610a2388360488075c850e28 (diff)
parent237dab675e943014a69e6776ca1d6af03e503b63 (diff)
downloadnextcloud-server-f42d5b6e56d9f6fcab2074b60a4a3f4fe753420b.tar.gz
nextcloud-server-f42d5b6e56d9f6fcab2074b60a4a3f4fe753420b.zip
Merge pull request #2007 from nextcloud/downstream-26411
[oc] Fix initMountPoints to set usersSetup earlier
Diffstat (limited to 'lib')
-rw-r--r--lib/private/Files/Filesystem.php26
1 files changed, 18 insertions, 8 deletions
diff --git a/lib/private/Files/Filesystem.php b/lib/private/Files/Filesystem.php
index d2662af527a..55cf38bbdc9 100644
--- a/lib/private/Files/Filesystem.php
+++ b/lib/private/Files/Filesystem.php
@@ -395,26 +395,36 @@ class Filesystem {
throw new \OC\User\NoUserException('Attempted to initialize mount points for null user and no user in session');
}
+ if (isset(self::$usersSetup[$user])) {
+ return;
+ }
+
+ self::$usersSetup[$user] = true;
+
$userManager = \OC::$server->getUserManager();
$userObject = $userManager->get($user);
if (is_null($userObject)) {
\OCP\Util::writeLog('files', ' Backends provided no user object for ' . $user, \OCP\Util::ERROR);
+ // reset flag, this will make it possible to rethrow the exception if called again
+ unset(self::$usersSetup[$user]);
throw new \OC\User\NoUserException('Backends provided no user object for ' . $user);
}
+ $realUid = $userObject->getUID();
// workaround in case of different casings
- if ($user !== $userObject->getUID()) {
+ if ($user !== $realUid) {
$stack = json_encode(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 50));
- \OCP\Util::writeLog('files', 'initMountPoints() called with wrong user casing. This could be a bug. Expected: "' . $userObject->getUID() . '" got "' . $user . '". Stack: ' . $stack, \OCP\Util::WARN);
- }
- $user = $userObject->getUID();
+ \OCP\Util::writeLog('files', 'initMountPoints() called with wrong user casing. This could be a bug. Expected: "' . $realUid . '" got "' . $user . '". Stack: ' . $stack, \OCP\Util::WARN);
+ $user = $realUid;
- if (isset(self::$usersSetup[$user])) {
- return;
- }
+ // again with the correct casing
+ if (isset(self::$usersSetup[$user])) {
+ return;
+ }
- self::$usersSetup[$user] = true;
+ self::$usersSetup[$user] = true;
+ }
/** @var \OC\Files\Config\MountProviderCollection $mountConfigManager */
$mountConfigManager = \OC::$server->getMountProviderCollection();