]> OzVa Git service - ozva-cloud/commitdiff
feat: tolerate the absence of mtime (#559)
authorsigoden <sigoden@gmail.com>
Thu, 20 Mar 2025 00:46:26 +0000 (08:46 +0800)
committerGitHub <noreply@github.com>
Thu, 20 Mar 2025 00:46:26 +0000 (08:46 +0800)
src/server.rs

index 3f75b162d0cf75ad623bd992ea266d23469d3574..8e50bc35ea0df03ad7d606943f9ded52222f4c3f 100644 (file)
@@ -1394,7 +1394,10 @@ impl Server {
             (true, false) => PathType::SymlinkFile,
             (false, false) => PathType::File,
         };
-        let mtime = to_timestamp(&meta.modified()?);
+        let mtime = match meta.modified().ok().or_else(|| meta.created().ok()) {
+            Some(v) => to_timestamp(&v),
+            None => 0,
+        };
         let size = match path_type {
             PathType::Dir | PathType::SymlinkDir => {
                 let mut count = 0;
@@ -1690,7 +1693,7 @@ async fn zip_dir<W: AsyncWrite + Unpin>(
 }
 
 fn extract_cache_headers(meta: &Metadata) -> Option<(ETag, LastModified)> {
-    let mtime = meta.modified().ok()?;
+    let mtime = meta.modified().ok().or_else(|| meta.created().ok())?;
     let timestamp = to_timestamp(&mtime);
     let size = meta.len();
     let etag = format!(r#""{timestamp}-{size}""#).parse::<ETag>().ok()?;