}
}
}
- int object_lock_response = verify_object_lock(this, obj->get_attrs(), false, false);
- if (object_lock_response != 0) {
- send_partial_response(*iter, false, "", object_lock_response);
- continue;
+
+ if (check_obj_lock) {
+ int object_lock_response = verify_object_lock(this, obj->get_attrs(), bypass_perm, bypass_governance_mode);
+ if (object_lock_response != 0) {
+ send_partial_response(*iter, false, "", object_lock_response);
+ continue;
+ }
}
-
// make reservation for notification if needed
const auto versioned_object = s->bucket->versioning_enabled();
rgw::notify::reservation_t res(store, s, obj.get());
bool quiet;
bool status_dumped;
bool acl_allowed = false;
+ bool bypass_perm;
+ bool bypass_governance_mode;
+
public:
RGWDeleteMultiObj() {
quiet = false;
status_dumped = false;
+ bypass_perm = true;
+ bypass_governance_mode = false;
}
int verify_permission(optional_yield y) override;
void pre_exec() override;
return ret;
}
+ const char *bypass_gov_header = s->info.env->get("HTTP_X_AMZ_BYPASS_GOVERNANCE_RETENTION");
+ if (bypass_gov_header) {
+ std::string bypass_gov_decoded = url_decode(bypass_gov_header);
+ bypass_governance_mode = boost::algorithm::iequals(bypass_gov_decoded, "true");
+ }
+
return do_aws4_auth_completion();
}