If op is bucket creation it should ignore ENOENT. Otherwise we should
make sure we return the appropriate error.
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
}
req->log(s, "init permissions");
- ret = handler->init_permissions();
+ ret = handler->init_permissions(op);
if (ret < 0) {
abort_early(s, op, ret, handler);
goto done;
}
}
- return 0;
+ return ret;
}
/**
virtual RGWOp *get_op(RGWRados *store);
virtual void put_op(RGWOp *op);
- virtual int init_permissions() {
+ virtual int init_permissions(RGWOp *op) {
return 0;
}
virtual int retarget(RGWOp *op, RGWOp **new_op) {
return OP_UNKNOWN;
}
-int RGWHandler_ObjStore::init_permissions()
+int RGWHandler_ObjStore::init_permissions(RGWOp *op)
{
+ if (op->get_type() == RGW_OP_CREATE_BUCKET)
+ return 0;
+
return do_init_permissions();
}
public:
RGWHandler_ObjStore() {}
virtual ~RGWHandler_ObjStore() {}
- int init_permissions();
+ int init_permissions(RGWOp *op);
int read_permissions(RGWOp *op);
virtual int retarget(RGWOp *op, RGWOp **new_op) {
*new_op = op;