From 53f064c73b07a54526472eba3c1066e3e8c90651 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20M=C3=B6ller?= Date: Fri, 25 Apr 2025 02:14:21 +0200 Subject: [PATCH] fix: incorrect seperator for zip archives under windows (#577) --- src/server.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/server.rs b/src/server.rs index ef9cf49..97c8d56 100644 --- a/src/server.rs +++ b/src/server.rs @@ -37,7 +37,7 @@ use std::collections::HashMap; use std::fs::Metadata; use std::io::SeekFrom; use std::net::SocketAddr; -use std::path::{Component, Path, PathBuf}; +use std::path::{Component, Path, PathBuf, MAIN_SEPARATOR}; use std::sync::atomic::{self, AtomicBool}; use std::sync::Arc; use std::time::SystemTime; @@ -1644,7 +1644,12 @@ async fn zip_dir( )) .await?; for zip_path in zip_paths.into_iter() { - let filename = match zip_path.strip_prefix(dir).ok().and_then(|v| v.to_str()) { + let filename = match zip_path + .strip_prefix(dir) + .ok() + .and_then(|v| v.to_str()) + .map(|v| v.replace(MAIN_SEPARATOR, "/")) + { Some(v) => v, None => continue, };