From ad720c4c17867df24de0dc55453efd0eea8b9a17 Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind@owncloud.com>
Date: Fri, 26 Oct 2012 18:17:43 +0200
Subject: [PATCH] possible fix for bombarding the server with the htaccess test
 during setup

---
 lib/util.php | 37 +++++++++++++++++++++----------------
 1 file changed, 21 insertions(+), 16 deletions(-)

diff --git a/lib/util.php b/lib/util.php
index 72b5e4d260..4ca84ba75a 100755
--- a/lib/util.php
+++ b/lib/util.php
@@ -64,23 +64,23 @@ class OC_Util {
 	}
 	
 	public static function loadUserMountPoints($user) {
-		$user_dir = '/'.$user.'/files';
-		$user_root = OC_User::getHome($user);
+		$user_dir = '/'.$user.'/files';
+		$user_root = OC_User::getHome($user);
 		$userdirectory = $user_root . '/files';
-		if (is_file($user_root.'/mount.php')) {
-			$mountConfig = include $user_root.'/mount.php';
-			if (isset($mountConfig['user'][$user])) {
-				foreach ($mountConfig['user'][$user] as $mountPoint => $options) {
-					OC_Filesystem::mount($options['class'], $options['options'], $mountPoint);
-				}
-			}
-		
-			$mtime=filemtime($user_root.'/mount.php');
-			$previousMTime=OC_Preferences::getValue($user,'files','mountconfigmtime',0);
-			if($mtime>$previousMTime) {//mount config has changed, filecache needs to be updated
-				OC_FileCache::triggerUpdate($user);
-				OC_Preferences::setValue($user,'files','mountconfigmtime',$mtime);
-			}
+		if (is_file($user_root.'/mount.php')) {
+			$mountConfig = include $user_root.'/mount.php';
+			if (isset($mountConfig['user'][$user])) {
+				foreach ($mountConfig['user'][$user] as $mountPoint => $options) {
+					OC_Filesystem::mount($options['class'], $options['options'], $mountPoint);
+				}
+			}
+		
+			$mtime=filemtime($user_root.'/mount.php');
+			$previousMTime=OC_Preferences::getValue($user,'files','mountconfigmtime',0);
+			if($mtime>$previousMTime) {//mount config has changed, filecache needs to be updated
+				OC_FileCache::triggerUpdate($user);
+				OC_Preferences::setValue($user,'files','mountconfigmtime',$mtime);
+			}
 		}		
 	}
 
@@ -582,6 +582,11 @@ class OC_Util {
 
 		// creating a test file
 		$testfile = OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ).'/'.$filename;
+
+		if(file_exists($testfile)){// already running this test, possible recursive call
+			return false;
+		}
+
 		$fp = @fopen($testfile, 'w');
 		@fwrite($fp, $testcontent);
 		@fclose($fp);
-- 
GitLab