diff options
| author | chrislu <chris.lu@gmail.com> | 2025-07-17 23:12:19 -0700 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2025-07-17 23:12:19 -0700 |
| commit | f9cbed7ee1a59c1345466b80e254a656352cc143 (patch) | |
| tree | dfde91bec83deffd0fa8ea4929af426455f0a932 /weed/s3api/s3api_object_handlers_retention.go | |
| parent | 69553e5ba6d46ed924b0c3adc3f8d9666550999a (diff) | |
| download | seaweedfs-f9cbed7ee1a59c1345466b80e254a656352cc143.tar.xz seaweedfs-f9cbed7ee1a59c1345466b80e254a656352cc143.zip | |
fix GetObjectLockConfigurationHandler
Diffstat (limited to 'weed/s3api/s3api_object_handlers_retention.go')
| -rw-r--r-- | weed/s3api/s3api_object_handlers_retention.go | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/weed/s3api/s3api_object_handlers_retention.go b/weed/s3api/s3api_object_handlers_retention.go index e92e821c8..f15e2fa54 100644 --- a/weed/s3api/s3api_object_handlers_retention.go +++ b/weed/s3api/s3api_object_handlers_retention.go @@ -322,14 +322,27 @@ func (s3a *S3ApiServer) GetObjectLockConfigurationHandler(w http.ResponseWriter, return } - // Check if object lock configuration exists - if bucketConfig.Entry.Extended == nil { - s3err.WriteErrorResponse(w, r, s3err.ErrNoSuchObjectLockConfiguration) - return + var configXML []byte + + if bucketConfig.Entry.Extended != nil { + // First check if we have stored XML configuration (includes retention policies) + if storedConfigXML, exists := bucketConfig.Entry.Extended[s3_constants.ExtObjectLockConfigKey]; exists { + configXML = storedConfigXML + } else { + // Check if Object Lock is enabled via boolean flag + if enabledBytes, exists := bucketConfig.Entry.Extended[s3_constants.ExtObjectLockEnabledKey]; exists { + enabled := string(enabledBytes) + if enabled == s3_constants.ObjectLockEnabled || enabled == "true" { + // Generate minimal XML configuration for enabled Object Lock without retention policies + minimalConfig := `<ObjectLockConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><ObjectLockEnabled>Enabled</ObjectLockEnabled></ObjectLockConfiguration>` + configXML = []byte(minimalConfig) + } + } + } } - configXML, exists := bucketConfig.Entry.Extended[s3_constants.ExtObjectLockConfigKey] - if !exists { + // If no Object Lock configuration found, return error + if len(configXML) == 0 { s3err.WriteErrorResponse(w, r, s3err.ErrNoSuchObjectLockConfiguration) return } |
