aboutsummaryrefslogtreecommitdiff
path: root/src/api/s3_delete.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/s3_delete.rs')
-rw-r--r--src/api/s3_delete.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/api/s3_delete.rs b/src/api/s3_delete.rs
index f46bfcfe..b019987b 100644
--- a/src/api/s3_delete.rs
+++ b/src/api/s3_delete.rs
@@ -86,7 +86,7 @@ pub async fn handle_delete_objects(
match handle_delete_internal(&garage, bucket, &obj.key).await {
Ok((deleted_version, delete_marker_version)) => {
writeln!(&mut retxml, "\t<Deleted>").unwrap();
- writeln!(&mut retxml, "\t\t<Key>{}</Key>", obj.key).unwrap();
+ writeln!(&mut retxml, "\t\t<Key>{}</Key>", xml_escape(&obj.key)).unwrap();
writeln!(
&mut retxml,
"\t\t<VersionId>{}</VersionId>",
@@ -104,7 +104,7 @@ pub async fn handle_delete_objects(
Err(e) => {
writeln!(&mut retxml, "\t<Error>").unwrap();
writeln!(&mut retxml, "\t\t<Code>{}</Code>", e.http_status_code()).unwrap();
- writeln!(&mut retxml, "\t\t<Key>{}</Key>", obj.key).unwrap();
+ writeln!(&mut retxml, "\t\t<Key>{}</Key>", xml_escape(&obj.key)).unwrap();
writeln!(
&mut retxml,
"\t\t<Message>{}</Message>",
@@ -118,7 +118,9 @@ pub async fn handle_delete_objects(
writeln!(&mut retxml, "</DeleteObjectsOutput>").unwrap();
- Ok(Response::new(Body::from(retxml.into_bytes())))
+ Ok(Response::builder()
+ .header("Content-Type", "application/xml")
+ .body(Body::from(retxml.into_bytes()))?)
}
struct DeleteRequest {