diff options
author | Bart Visscher <bartv@thisnet.nl> | 2013-05-03 05:37:01 -0700 |
---|---|---|
committer | Bart Visscher <bartv@thisnet.nl> | 2013-05-03 05:37:01 -0700 |
commit | 05a0b4533b079b50f013bdf511b45a9f8dcb976d (patch) | |
tree | 228e8b67ef908e5bfe735727c55185dbccfbb440 /lib/files.php | |
parent | 9c3b83e28c8a10f9ad38d3487dae1a3bc9601635 (diff) | |
parent | 033c94d076e3340a4a472d1b3f61ade5f22009ea (diff) | |
download | nextcloud-server-05a0b4533b079b50f013bdf511b45a9f8dcb976d.tar.gz nextcloud-server-05a0b4533b079b50f013bdf511b45a9f8dcb976d.zip |
Merge pull request #2491 from riso/xsendfile_fix_zip
improved handling of xsendfile zip generation race condition
Diffstat (limited to 'lib/files.php')
-rw-r--r-- | lib/files.php | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/lib/files.php b/lib/files.php index 04ba51d9d24..ab7fa1ed096 100644 --- a/lib/files.php +++ b/lib/files.php @@ -59,11 +59,7 @@ class OC_Files { $executionTime = intval(ini_get('max_execution_time')); set_time_limit(0); $zip = new ZipArchive(); - if ($xsendfile) { - $filename = OC_Helper::tmpFileNoClean('.zip'); - }else{ - $filename = OC_Helper::tmpFile('.zip'); - } + $filename = OC_Helper::tmpFile('.zip'); if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==true) { exit("cannot open <$filename>\n"); } @@ -78,6 +74,9 @@ class OC_Files { } } $zip->close(); + if ($xsendfile) { + $filename = OC_Helper::moveToNoClean($filename); + } $basename = basename($dir); if ($basename) { $name = $basename . '.zip'; @@ -91,17 +90,16 @@ class OC_Files { $executionTime = intval(ini_get('max_execution_time')); set_time_limit(0); $zip = new ZipArchive(); - if ($xsendfile) { - $filename = OC_Helper::tmpFileNoClean('.zip'); - }else{ - $filename = OC_Helper::tmpFile('.zip'); - } + $filename = OC_Helper::tmpFile('.zip'); if ($zip->open($filename, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)!==true) { exit("cannot open <$filename>\n"); } $file = $dir . '/' . $files; self::zipAddDir($file, $zip); $zip->close(); + if ($xsendfile) { + $filename = OC_Helper::moveToNoClean($filename); + } $name = $files . '.zip'; set_time_limit($executionTime); } else { |