S3-compatible object store for small self-hosted geo-distributed deployments
Find a file
Armael 6fd9bba0cb WebsiteConfiguration: do not emit empty XML attributes for absent values (#1391)
This fixes a regression wrt garage-v1, likely caused by the version upgrade of quick_xml.

Currently, garage-v2 will emit empty ErrorDocument/IndexDocument/RedirectAllRequestsTo attributes in the response of GetBucketWebsite if there are no corresponding values.
This is somewhat wrong; at least, the S3 documentation for RedirectAllRequestsTo (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RedirectAllRequestsTo.html) writes that it has a required HostName field. So emitting an empty RedirectAllRequestsTo is invalid.

This PR skips emitting XML attributes for these parameters if they contain no value.

Co-authored-by: Armaël Guéneau <armael.gueneau@ens-lyon.org>
Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/1391
Co-authored-by: Armael <armael@noreply.localhost>
Co-committed-by: Armael <armael@noreply.localhost>
2026-04-13 13:59:32 +00:00
.woodpecker run push CI only on main branch (#1343) 2026-02-15 08:57:52 +00:00
doc admin api: convert new fields to Option<T> 2026-03-17 17:44:29 +00:00
nix Merge branch 'main-v1' into merge-v1 2026-01-24 09:56:02 +01:00
script helm: add priorityClassName support to pod spec 2026-02-20 21:36:08 +00:00
src WebsiteConfiguration: do not emit empty XML attributes for absent values (#1391) 2026-04-13 13:59:32 +00:00
.dockerignore Build Docker image 2020-06-30 17:18:42 +02:00
.envrc Implement rpc_secret_file 2023-01-04 18:35:10 +01:00
.gitignore Implement rpc_secret_file 2023-01-04 18:35:10 +01:00
Cargo.lock wip: add percent_decode before uri_encode for check signature 2026-03-22 10:59:43 +00:00
Cargo.toml chore: update quick-xml dep 2026-02-20 21:29:26 +00:00
default.nix nix, ci: build with Crane 2025-02-03 16:39:50 +01:00
Dockerfile nix, ci: build with Crane 2025-02-03 16:39:50 +01:00
flake.lock pin crane version in flake 2026-01-24 10:36:19 +01:00
flake.nix chore: fix typos in various files 2026-01-29 14:53:27 +01:00
LICENSE Switch to AGPL 2021-03-16 16:35:46 +01:00
Makefile remove cargo build options in makefile to avoid mistakes 2025-02-14 18:06:07 +01:00
README.md [woodpecker] convert drone pipelines to woodpecker 2024-02-08 18:24:52 +01:00
rustfmt.toml Fix the Sync issue. Details: 2020-04-10 22:01:48 +02:00
shell.nix chore: update cmd parameter name in shell.nix 2026-01-29 22:14:34 +00:00
taplo.toml chore: add taplo.toml and resave Cargo.toml 2026-01-29 20:49:28 +01:00
typos.toml chore: add exceptions in typos conf file 2026-01-29 14:53:27 +01:00

Garage status-badge

Garage logo

[ Website and documentation | Binary releases | Git repository | Matrix channel ]

Garage is an S3-compatible distributed object storage service designed for self-hosting at a small-to-medium scale.

Garage is designed for storage clusters composed of nodes running at different physical locations, in order to easily provide a storage service that replicates data at these different locations and stays available even when some servers are unreachable. Garage also focuses on being lightweight, easy to operate, and highly resilient to machine failures.

Garage is built by Deuxfleurs, an experimental small-scale self hosted service provider, which has been using it in production since its first release in 2020.

Learn more on our dedicated documentation pages:

Garage is entirely free software released under the terms of the AGPLv3.