fix: panic on PROPFIND // (#144)

This commit is contained in:
sigoden 2022-11-10 19:28:01 +08:00 committed by GitHub
parent 604ccc6556
commit 8b4727c3a4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 1 deletions

View file

@ -897,7 +897,11 @@ impl Server {
}
fn extract_path(&self, path: &str) -> Option<PathBuf> {
let decoded_path = decode_uri(&path[1..])?;
let mut slash_stripped_path = path;
while let Some(p) = slash_stripped_path.strip_prefix('/') {
slash_stripped_path = p
}
let decoded_path = decode_uri(slash_stripped_path)?;
let slashes_switched = if cfg!(windows) {
decoded_path.replace('/', "\\")
} else {

View file

@ -47,6 +47,13 @@ fn propfind_404(server: TestServer) -> Result<(), Error> {
Ok(())
}
#[rstest]
fn propfind_double_slash(server: TestServer) -> Result<(), Error> {
let resp = fetch!(b"PROPFIND", format!("{}/", server.url())).send()?;
assert_eq!(resp.status(), 207);
Ok(())
}
#[rstest]
fn propfind_file(server: TestServer) -> Result<(), Error> {
let resp = fetch!(b"PROPFIND", format!("{}test.html", server.url())).send()?;