diff options
author | Morris Jobke <hey@morrisjobke.de> | 2016-11-04 15:03:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-04 15:03:52 +0100 |
commit | f42d5b6e56d9f6fcab2074b60a4a3f4fe753420b (patch) | |
tree | e289cb8376f0e3fdee7461d343216e639103df94 /lib | |
parent | a77e7075f627c82a610a2388360488075c850e28 (diff) | |
parent | 237dab675e943014a69e6776ca1d6af03e503b63 (diff) | |
download | nextcloud-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.php | 26 |
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(); |