From 32b8fd8fb7a0deb1461820e6dcfdb6a0114ff980 Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind@owncloud.com>
Date: Fri, 15 Mar 2013 16:31:35 +0100
Subject: [PATCH] Improve handeling of unlimited max upload size

---
 apps/files/ajax/upload.php | 2 +-
 lib/files/filesystem.php   | 1 +
 lib/helper.php             | 8 +++++++-
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php
index 5b697777e4..b9eea2fea6 100644
--- a/apps/files/ajax/upload.php
+++ b/apps/files/ajax/upload.php
@@ -47,7 +47,7 @@ $totalSize = 0;
 foreach ($files['size'] as $size) {
 	$totalSize += $size;
 }
-if ($totalSize > $maxUploadFilesize) {
+if ($maxUploadFilesize >= 0 and $totalSize > $maxUploadFilesize) {
 	OCP\JSON::error(array('data' => array('message' => $l->t('Not enough storage available'),
 		'uploadMaxFilesize' => $maxUploadFilesize,
 		'maxHumanFilesize' => $maxHumanFilesize)));
diff --git a/lib/files/filesystem.php b/lib/files/filesystem.php
index d32e082ade..5c3a0cf93e 100644
--- a/lib/files/filesystem.php
+++ b/lib/files/filesystem.php
@@ -30,6 +30,7 @@
 namespace OC\Files;
 
 const FREE_SPACE_UNKNOWN = -2;
+const FREE_SPACE_UNLIMITED = -3;
 
 class Filesystem {
 	public static $loaded = false;
diff --git a/lib/helper.php b/lib/helper.php
index 41985ca57a..6ee8a48916 100644
--- a/lib/helper.php
+++ b/lib/helper.php
@@ -764,7 +764,13 @@ class OC_Helper {
 	public static function maxUploadFilesize($dir) {
 		$upload_max_filesize = OCP\Util::computerFileSize(ini_get('upload_max_filesize'));
 		$post_max_size = OCP\Util::computerFileSize(ini_get('post_max_size'));
-		$maxUploadFilesize = min($upload_max_filesize, $post_max_size);
+		if ($upload_max_filesize === 0 and $post_max_size === 0) {
+			$maxUploadFilesize = \OC\Files\FREE_SPACE_UNLIMITED;
+		} elseif ($upload_max_filesize === 0 or $post_max_size === 0) {
+			$maxUploadFilesize = max($upload_max_filesize, $post_max_size); //only the non 0 value counts
+		} else {
+			$maxUploadFilesize = min($upload_max_filesize, $post_max_size);
+		}
 
 		$freeSpace = \OC\Files\Filesystem::free_space($dir);
 		if($freeSpace !== \OC\Files\FREE_SPACE_UNKNOWN){
-- 
GitLab