]> OzVa Git service - ozva-cloud/commitdiff
fix: caught 500 if no permission to access dir
authorsigoden <sigoden@gmail.com>
Wed, 1 Jun 2022 11:59:35 +0000 (19:59 +0800)
committersigoden <sigoden@gmail.com>
Wed, 1 Jun 2022 11:59:35 +0000 (19:59 +0800)
releated #4

src/server.rs

index f6f6a02830331fec672a39997b1e26cef86ad664..90faa4d9fa79e5503bbe941e3684aa002b4ae9e0 100644 (file)
@@ -241,7 +241,13 @@ impl InnerService {
     async fn handle_ls_dir(&self, path: &Path, exist: bool, res: &mut Response) -> BoxResult<()> {
         let mut paths: Vec<PathItem> = vec![];
         if exist {
-            let mut rd = fs::read_dir(path).await?;
+            let mut rd = match fs::read_dir(path).await {
+                Ok(rd) => rd,
+                Err(_) => {
+                    status!(res, StatusCode::FORBIDDEN);
+                    return Ok(());
+                }
+            };
             while let Some(entry) = rd.next_entry().await? {
                 let entry_path = entry.path();
                 if let Ok(Some(item)) = self.to_pathitem(entry_path, path.to_path_buf()).await {