The cached req_state is still not correct at RGWOp::execute().
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
goto done;
}
+#warning authorize step disabled (no cached perms)
+#if 0
req->log(s, "verifying op permissions");
ret = op->verify_permission();
if (ret < 0) {
goto done;
}
}
+#endif
req->log(s, "verifying op params");
ret = op->verify_params();
(void) librgw.get_fe()->execute_req(&req);
} else {
/*
- RGWListBucketRequest req(cct, rgw_fs->user_id, uri, rcb, cb_arg, offset);
- ...
- */
+ * bucket?
+ */
+ uri += "/";
+
RGWListBucketRequest req(cct, rgw_fs->user_id, uri, rcb, cb_arg, offset);
(void) librgw.get_fe()->execute_req(&req);
s->info.request_params = "";
s->info.domain = ""; /* XXX ? */
- /* XXX fake user_id (will fix) */
+ /* XXX fake user_id and perms (will fix) */
s->user.user_id = user_id;
s->user.display_name = user_id;
+ s->perm_mask = RGW_PERM_READ;
return 0;
}
if (!sent_data)
return;
- // XXX we can improve this
+ // XXX if necessary, we can remove the need for dynamic_cast
RGWListBucketsRequest* req
= dynamic_cast<RGWListBucketsRequest*>(this);
void RGWListBucket_ObjStore_Lib::send_response()
{
+ // XXX if necessary, we can remove the need for dynamic_cast
+ RGWListBucketRequest* req
+ = dynamic_cast<RGWListBucketRequest*>(this);
+
for (const auto& iter : objs) {
- // XXXX cb(iter.key.name, iter.key.name); // XXX marker, attributes
+ /* call me maybe */
+ req->operator()(iter.key.name, iter.key.name); // XXX attributes
}
}
for (auto& fid : fids1) {
std::cout << "readdir in bucket " << get<0>(fid) << std::endl;
bool eof = false;
- int ret = rgw_readdir(fs, get<2>(fid), 0 /* offset */, r2_cb, &fids2,
+ uint64_t offset = 0;
+ int ret = rgw_readdir(fs, get<2>(fid), &offset, r2_cb, &fids2,
&eof);
for (auto& fid2 : fids2) {
std::cout << "fname: " << get<0>(fid2) << " fid: " << get<1>(fid2)