]> git.p6c8.net - jirafeau.git/commitdiff
Store filesize before encrypting the file
authorPatrick Canterino <patrick@patrick-canterino.de>
Sun, 10 Nov 2024 13:03:40 +0000 (14:03 +0100)
committerPatrick Canterino <patrick@patrick-canterino.de>
Sun, 10 Nov 2024 13:03:40 +0000 (14:03 +0100)
This currently applies only for async uploads.

Otherwise we would send the size of the encrypted file and the data of the unencrypted file.
The encrypted file is usually larger than the unencrypted one. So the browser expects more
data and aborts the download because it thinks it didn't receive all the data.

lib/functions.php

index 2843e29d685f34fd0963ac7fe2d4fc203a77e163..9091af7d3b27772de8d0df99d197b34a01cbfb9d 100644 (file)
@@ -1197,6 +1197,11 @@ function jirafeau_async_end($ref, $code, $crypt, $link_name_length, $file_hash_m
         return "Error: referenced file does not exist";
     }
 
         return "Error: referenced file does not exist";
     }
 
+    /* Store filesize before encrypting the file */
+    /* Otherwise we would send the size of the encrypted file and the data of the unencrypted file */
+    /* This would break some browsers */
+    $size = filesize($p);
+
     $crypted = false;
     $crypt_key = '';
     if ($crypt == true && extension_loaded('sodium') == true) {
     $crypted = false;
     $crypt_key = '';
     if ($crypt == true && extension_loaded('sodium') == true) {
@@ -1209,7 +1214,6 @@ function jirafeau_async_end($ref, $code, $crypt, $link_name_length, $file_hash_m
     }
 
     $hash = jirafeau_hash_file($file_hash_method, $p);
     }
 
     $hash = jirafeau_hash_file($file_hash_method, $p);
-    $size = filesize($p);
     $np = s2p($hash);
     $delete_link_code = jirafeau_gen_random(5);
 
     $np = s2p($hash);
     $delete_link_code = jirafeau_gen_random(5);
 

patrick-canterino.de