diff options
author | Yehuda Sadeh <yehuda@inktank.com> | 2013-05-23 11:39:13 -0700 |
---|---|---|
committer | Yehuda Sadeh <yehuda@inktank.com> | 2013-05-23 11:39:13 -0700 |
commit | c812bb513aceb3be4ee858df36d3bbab45afccc0 (patch) | |
tree | d04a2198cb38c1a7fbf5805c51b383e64f3aacd5 | |
parent | 87eaaab68fd01046706ab4b320030008b1798167 (diff) | |
download | ceph-c812bb513aceb3be4ee858df36d3bbab45afccc0.tar.gz |
rgw: separate certain request info into different structure
This is needed for later request forwarding.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
-rw-r--r-- | src/Makefile.am | 3 | ||||
-rw-r--r-- | src/rgw/rgw_common.cc | 21 | ||||
-rw-r--r-- | src/rgw/rgw_common.h | 26 | ||||
-rw-r--r-- | src/rgw/rgw_log.cc | 2 | ||||
-rw-r--r-- | src/rgw/rgw_main.cc | 6 | ||||
-rw-r--r-- | src/rgw/rgw_op.cc | 32 | ||||
-rw-r--r-- | src/rgw/rgw_op.h | 2 | ||||
-rw-r--r-- | src/rgw/rgw_rest.cc | 109 | ||||
-rw-r--r-- | src/rgw/rgw_rest_bucket.cc | 6 | ||||
-rw-r--r-- | src/rgw/rgw_rest_metadata.cc | 6 | ||||
-rw-r--r-- | src/rgw/rgw_rest_s3.cc | 90 | ||||
-rw-r--r-- | src/rgw/rgw_rest_s3.h | 8 | ||||
-rw-r--r-- | src/rgw/rgw_rest_swift.cc | 56 | ||||
-rw-r--r-- | src/rgw/rgw_rest_user.cc | 22 | ||||
-rw-r--r-- | src/rgw/rgw_swift_auth.cc | 10 |
15 files changed, 204 insertions, 195 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index befa68dda20..360722e2b01 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -153,6 +153,7 @@ bin_PROGRAMS += monmaptool crushtool osdmaptool rgw_dencoder_src = rgw/rgw_dencoder.cc \ rgw/rgw_acl.cc \ rgw/rgw_common.cc \ + rgw/rgw_env.cc \ rgw/rgw_json_enc.cc ceph_dencoder_SOURCES = test/encoding/ceph_dencoder.cc ${rgw_dencoder_src} perfglue/disabled_heap_profiler.cc @@ -433,7 +434,7 @@ ceph_rgw_multiparser_CXXFLAGS = ${AM_CXXFLAGS} ceph_rgw_multiparser_LDADD = $(my_radosgw_ldadd) bin_DEBUGPROGRAMS += ceph_rgw_multiparser -ceph_rgw_jsonparser_SOURCES = rgw/rgw_jsonparser.cc rgw/rgw_common.cc rgw/rgw_json_enc.cc +ceph_rgw_jsonparser_SOURCES = rgw/rgw_jsonparser.cc rgw/rgw_common.cc rgw/rgw_env.cc rgw/rgw_json_enc.cc ceph_rgw_jsonparser_CXXFLAGS = ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS} ceph_rgw_jsonparser_LDADD = $(my_radosgw_ldadd) bin_DEBUGPROGRAMS += ceph_rgw_jsonparser diff --git a/src/rgw/rgw_common.cc b/src/rgw/rgw_common.cc index 73a43430dcd..64e052f517c 100644 --- a/src/rgw/rgw_common.cc +++ b/src/rgw/rgw_common.cc @@ -92,12 +92,25 @@ is_err() const } +req_info::req_info(CephContext *cct, struct RGWEnv *e) : env(e) { + method = env->get("REQUEST_METHOD"); + script_uri = env->get("SCRIPT_URI", cct->_conf->rgw_script_uri.c_str()); + request_uri = env->get("REQUEST_URI", cct->_conf->rgw_request_uri.c_str()); + int pos = request_uri.find('?'); + if (pos >= 0) { + request_params = request_uri.substr(pos + 1); + request_uri = request_uri.substr(0, pos); + } + host = env->get("HTTP_HOST"); +} + + req_state::req_state(CephContext *_cct, struct RGWEnv *e) : cct(_cct), cio(NULL), op(OP_UNKNOWN), bucket_cors(NULL), has_acl_header(false), - os_auth_token(NULL), env(e) + os_auth_token(NULL), info(_cct, e) { - enable_ops_log = env->conf->enable_ops_log; - enable_usage_log = env->conf->enable_usage_log; + enable_ops_log = e->conf->enable_ops_log; + enable_usage_log = e->conf->enable_usage_log; content_started = false; format = 0; formatter = NULL; @@ -121,8 +134,6 @@ req_state::req_state(CephContext *_cct, struct RGWEnv *e) : cct(_cct), cio(NULL) object = NULL; bucket_name = NULL; has_bad_meta = false; - host = NULL; - method = NULL; length = NULL; copy_source = NULL; http_auth = NULL; diff --git a/src/rgw/rgw_common.h b/src/rgw/rgw_common.h index 1383d2b914c..dc1b0a13bb4 100644 --- a/src/rgw/rgw_common.h +++ b/src/rgw/rgw_common.h @@ -651,6 +651,20 @@ struct RGWObjVersionTracker { void generate_new_write_ver(CephContext *cct); }; +struct req_info { + RGWEnv *env; + XMLArgs args; + map<string, string> x_meta_map; + + const char *host; + const char *method; + string script_uri; + string request_uri; + string request_params; + + req_info(CephContext *cct, RGWEnv *_env); +}; + /** Store all the state necessary to complete and respond to an HTTP request*/ struct req_state { CephContext *cct; @@ -661,11 +675,6 @@ struct req_state { ceph::Formatter *formatter; string decoded_uri; string effective_uri; - string request_uri; - string script_uri; - string request_params; - const char *host; - const char *method; const char *length; uint64_t content_length; map<string, string> generic_attrs; @@ -678,8 +687,6 @@ struct req_state { uint32_t perm_mask; utime_t header_time; - XMLArgs args; - const char *bucket_name; const char *object; @@ -691,7 +698,6 @@ struct req_state { RGWObjVersionTracker objv_tracker; - map<string, string> x_meta_map; bool has_bad_meta; RGWUserInfo user; @@ -714,14 +720,14 @@ struct req_state { utime_t time; - struct RGWEnv *env; - void *obj_ctx; string dialect; string req_id; + req_info info; + req_state(CephContext *_cct, struct RGWEnv *e); ~req_state(); }; diff --git a/src/rgw/rgw_log.cc b/src/rgw/rgw_log.cc index 09fdacf4f2f..16f5f64a572 100644 --- a/src/rgw/rgw_log.cc +++ b/src/rgw/rgw_log.cc @@ -13,7 +13,7 @@ static void set_param_str(struct req_state *s, const char *name, string& str) { - const char *p = s->env->get(name); + const char *p = s->info.env->get(name); if (p) str = p; } diff --git a/src/rgw/rgw_main.cc b/src/rgw/rgw_main.cc index bcf740d32b1..87209bc54d9 100644 --- a/src/rgw/rgw_main.cc +++ b/src/rgw/rgw_main.cc @@ -110,10 +110,10 @@ struct RGWRequest } void log(struct req_state *s, const char *msg) { - if (s->method && req_str.size() == 0) { - req_str = s->method; + if (s->info.method && req_str.size() == 0) { + req_str = s->info.method; req_str.append(" "); - req_str.append(s->request_uri); + req_str.append(s->info.request_uri); } utime_t t = ceph_clock_now(g_ceph_context) - ts; dout(2) << "req " << id << ":" << t << ":" << s->dialect << ":" << req_str << ":" << (op ? op->name() : "") << ":" << msg << dendl; diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index fe293c0ef99..b038044ae0e 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -140,13 +140,13 @@ static void format_xattr(std::string &xattr) * attrs: will be filled up with attrs mapped as <attr_name, attr_contents> * */ -void rgw_get_request_metadata(struct req_state *s, map<string, bufferlist>& attrs) +static void rgw_get_request_metadata(CephContext *cct, struct req_info& info, map<string, bufferlist>& attrs) { map<string, string>::iterator iter; - for (iter = s->x_meta_map.begin(); iter != s->x_meta_map.end(); ++iter) { + for (iter = info.x_meta_map.begin(); iter != info.x_meta_map.end(); ++iter) { const string &name(iter->first); string &xattr(iter->second); - ldout(s->cct, 10) << "x>> " << name << ":" << xattr << dendl; + ldout(cct, 10) << "x>> " << name << ":" << xattr << dendl; format_xattr(xattr); string attr_name(RGW_ATTR_PREFIX); attr_name.append(name); @@ -242,7 +242,7 @@ static int get_obj_attrs(RGWRados *store, struct req_state *s, rgw_obj& obj, map static int read_policy(RGWRados *store, struct req_state *s, RGWBucketInfo& bucket_info, RGWAccessControlPolicy *policy, rgw_bucket& bucket, string& object) { string upload_id; - upload_id = s->args.get("uploadId"); + upload_id = s->info.args.get("uploadId"); string oid = object; rgw_obj obj; @@ -1268,10 +1268,10 @@ int RGWPutObjProcessor_Multipart::prepare(RGWRados *store, struct req_state *s) string oid = s->object_str; string upload_id; - upload_id = s->args.get("uploadId"); + upload_id = s->info.args.get("uploadId"); mp.init(oid, upload_id); - part_num = s->args.get("partNumber"); + part_num = s->info.args.get("partNumber"); if (part_num.empty()) { return -EINVAL; } @@ -1320,7 +1320,7 @@ RGWPutObjProcessor *RGWPutObj::select_processor() { RGWPutObjProcessor *processor; - bool multipart = s->args.exists("uploadId"); + bool multipart = s->info.args.exists("uploadId"); uint64_t part_size = s->cct->_conf->rgw_obj_stripe_size; @@ -1451,7 +1451,7 @@ void RGWPutObj::execute() attrbl.append(val.c_str(), val.size() + 1); } - rgw_get_request_metadata(s, attrs); + rgw_get_request_metadata(s->cct, s->info, attrs); ret = processor->complete(etag, attrs); done: @@ -1600,7 +1600,7 @@ void RGWPutMetadata::execute() if (ret < 0) return; - rgw_get_request_metadata(s, attrs); + rgw_get_request_metadata(s->cct, s->info, attrs); /* no need to track object versioning, need it for bucket's data only */ RGWObjVersionTracker *ptracker = (s->object ? NULL : &s->objv_tracker); @@ -1763,7 +1763,7 @@ int RGWCopyObj::init_common() dest_policy.encode(aclbl); attrs[RGW_ATTR_ACL] = aclbl; - rgw_get_request_metadata(s, attrs); + rgw_get_request_metadata(s->cct, s->info, attrs); map<string, string>::iterator iter; for (iter = s->generic_attrs.begin(); iter != s->generic_attrs.end(); ++iter) { @@ -2088,7 +2088,7 @@ void RGWOptionsCORS::execute() ret = -EACCES; return; } - req_meth = s->env->get("HTTP_ACCESS_CONTROL_REQUEST_METHOD"); + req_meth = s->info.env->get("HTTP_ACCESS_CONTROL_REQUEST_METHOD"); if (!req_meth) { dout(0) << "Preflight request without mandatory Access-control-request-method header" @@ -2096,7 +2096,7 @@ void RGWOptionsCORS::execute() ret = -EACCES; return; } - origin = s->env->get("HTTP_ORIGIN"); + origin = s->info.env->get("HTTP_ORIGIN"); if (!origin) { dout(0) << "Preflight request without mandatory Origin header" @@ -2104,7 +2104,7 @@ void RGWOptionsCORS::execute() ret = -EACCES; return; } - req_hdrs = s->env->get("HTTP_ACCESS_CONTROL_ALLOW_HEADERS"); + req_hdrs = s->info.env->get("HTTP_ACCESS_CONTROL_ALLOW_HEADERS"); ret = validate_cors_request(); if (!rule) { origin = req_meth = NULL; @@ -2144,7 +2144,7 @@ void RGWInitMultipart::execute() attrbl.append(val.c_str(), val.size() + 1); } - rgw_get_request_metadata(s, attrs); + rgw_get_request_metadata(s->cct, s->info, attrs); do { char buf[33]; @@ -2372,7 +2372,7 @@ void RGWAbortMultipart::execute() ret = -EINVAL; string upload_id; string meta_oid; - upload_id = s->args.get("uploadId"); + upload_id = s->info.args.get("uploadId"); map<uint32_t, RGWUploadPartInfo> obj_parts; map<uint32_t, RGWUploadPartInfo>::iterator obj_iter; RGWAccessControlPolicy policy(s->cct); @@ -2462,7 +2462,7 @@ void RGWListBucketMultiparts::execute() if (s->prot_flags & RGW_REST_SWIFT) { string path_args; - path_args = s->args.get("path"); + path_args = s->info.args.get("path"); if (!path_args.empty()) { if (!delimiter.empty() || !prefix.empty()) { ret = -EINVAL; diff --git a/src/rgw/rgw_op.h b/src/rgw/rgw_op.h index e580e0b4895..f678f3be6b0 100644 --- a/src/rgw/rgw_op.h +++ b/src/rgw/rgw_op.h @@ -26,8 +26,6 @@ using namespace std; struct req_state; class RGWHandler; -void rgw_get_request_metadata(struct req_state *s, map<string, bufferlist>& attrs); - /** * Provide the base class for all ops. diff --git a/src/rgw/rgw_rest.cc b/src/rgw/rgw_rest.cc index 9f093bac1d2..76461433774 100644 --- a/src/rgw/rgw_rest.cc +++ b/src/rgw/rgw_rest.cc @@ -274,10 +274,10 @@ void dump_object_from_state(struct req_state *s) void dump_uri_from_state(struct req_state *s) { - if (strcmp(s->request_uri.c_str(), "/") == 0) { + if (strcmp(s->info.request_uri.c_str(), "/") == 0) { string location = "http://"; - string server = s->env->get("SERVER_NAME", "<SERVER_NAME>"); + string server = s->info.env->get("SERVER_NAME", "<SERVER_NAME>"); location.append(server); location += "/"; if (!s->bucket_name_str.empty()) { @@ -290,7 +290,7 @@ void dump_uri_from_state(struct req_state *s) } } else { - s->cio->print("Location: \"%s\"\n", s->request_uri.c_str()); + s->cio->print("Location: \"%s\"\n", s->info.request_uri.c_str()); } } @@ -441,11 +441,11 @@ void dump_range(struct req_state *s, uint64_t ofs, uint64_t end, uint64_t total) int RGWGetObj_ObjStore::get_params() { - range_str = s->env->get("HTTP_RANGE"); - if_mod = s->env->get("HTTP_IF_MODIFIED_SINCE"); - if_unmod = s->env->get("HTTP_IF_UNMODIFIED_SINCE"); - if_match = s->env->get("HTTP_IF_MATCH"); - if_nomatch = s->env->get("HTTP_IF_NONE_MATCH"); + range_str = s->info.env->get("HTTP_RANGE"); + if_mod = s->info.env->get("HTTP_IF_MODIFIED_SINCE"); + if_unmod = s->info.env->get("HTTP_IF_UNMODIFIED_SINCE"); + if_match = s->info.env->get("HTTP_IF_MATCH"); + if_nomatch = s->info.env->get("HTTP_IF_NONE_MATCH"); return 0; } @@ -453,7 +453,7 @@ int RGWGetObj_ObjStore::get_params() int RESTArgs::get_string(struct req_state *s, const string& name, const string& def_val, string *val, bool *existed) { bool exists; - *val = s->args.get(name, &exists); + *val = s->info.args.get(name, &exists); if (existed) *existed = exists; @@ -469,7 +469,7 @@ int RESTArgs::get_string(struct req_state *s, const string& name, const string& int RESTArgs::get_uint64(struct req_state *s, const string& name, uint64_t def_val, uint64_t *val, bool *existed) { bool exists; - string sval = s->args.get(name, &exists); + string sval = s->info.args.get(name, &exists); if (existed) *existed = exists; @@ -489,7 +489,7 @@ int RESTArgs::get_uint64(struct req_state *s, const string& name, uint64_t def_v int RESTArgs::get_int64(struct req_state *s, const string& name, int64_t def_val, int64_t *val, bool *existed) { bool exists; - string sval = s->args.get(name, &exists); + string sval = s->info.args.get(name, &exists); if (existed) *existed = exists; @@ -509,7 +509,7 @@ int RESTArgs::get_int64(struct req_state *s, const string& name, int64_t def_val int RESTArgs::get_uint32(struct req_state *s, const string& name, uint32_t def_val, uint32_t *val, bool *existed) { bool exists; - string sval = s->args.get(name, &exists); + string sval = s->info.args.get(name, &exists); if (existed) *existed = exists; @@ -529,7 +529,7 @@ int RESTArgs::get_uint32(struct req_state *s, const string& name, uint32_t def_v int RESTArgs::get_int32(struct req_state *s, const string& name, int32_t def_val, int32_t *val, bool *existed) { bool exists; - string sval = s->args.get(name, &exists); + string sval = s->info.args.get(name, &exists); if (existed) *existed = exists; @@ -549,7 +549,7 @@ int RESTArgs::get_int32(struct req_state *s, const string& name, int32_t def_val int RESTArgs::get_time(struct req_state *s, const string& name, const utime_t& def_val, utime_t *val, bool *existed) { bool exists; - string sval = s->args.get(name, &exists); + string sval = s->info.args.get(name, &exists); if (existed) *existed = exists; @@ -573,7 +573,7 @@ int RESTArgs::get_time(struct req_state *s, const string& name, const utime_t& d int RESTArgs::get_epoch(struct req_state *s, const string& name, uint64_t def_val, uint64_t *epoch, bool *existed) { bool exists; - string date = s->args.get(name, &exists); + string date = s->info.args.get(name, &exists); if (existed) *existed = exists; @@ -593,7 +593,7 @@ int RESTArgs::get_epoch(struct req_state *s, const string& name, uint64_t def_va int RESTArgs::get_bool(struct req_state *s, const string& name, bool def_val, bool *val, bool *existed) { bool exists; - string sval = s->args.get(name, &exists); + string sval = s->info.args.get(name, &exists); if (existed) *existed = exists; @@ -651,7 +651,7 @@ int RGWPutObj_ObjStore::verify_params() int RGWPutObj_ObjStore::get_params() { - supplied_md5_b64 = s->env->get("HTTP_CONTENT_MD5"); + supplied_md5_b64 = s->info.env->get("HTTP_CONTENT_MD5"); return 0; } @@ -684,7 +684,7 @@ int RGWPutObj_ObjStore::get_data(bufferlist& bl) } if (!ofs) - supplied_md5_b64 = s->env->get("HTTP_CONTENT_MD5"); + supplied_md5_b64 = s->info.env->get("HTTP_CONTENT_MD5"); return len; } @@ -823,7 +823,7 @@ int rgw_rest_read_all_input(struct req_state *s, char **pdata, int *plen, int ma return ret; data[len] = '\0'; } else if (!s->length) { - const char *encoding = s->env->get("HTTP_TRANSFER_ENCODING"); + const char *encoding = s->info.env->get("HTTP_TRANSFER_ENCODING"); if (!encoding || strcmp(encoding, "chunked") != 0) return -ERR_LENGTH_REQUIRED; @@ -841,7 +841,7 @@ int rgw_rest_read_all_input(struct req_state *s, char **pdata, int *plen, int ma int RGWCompleteMultipart_ObjStore::get_params() { - upload_id = s->args.get("uploadId"); + upload_id = s->info.args.get("uploadId"); if (upload_id.empty()) { ret = -ENOTSUP; @@ -858,16 +858,16 @@ int RGWCompleteMultipart_ObjStore::get_params() int RGWListMultipart_ObjStore::get_params() { - upload_id = s->args.get("uploadId"); + upload_id = s->info.args.get("uploadId"); if (upload_id.empty()) { ret = -ENOTSUP; } - string str = s->args.get("part-number-marker"); + string str = s->info.args.get("part-number-marker"); if (!str.empty()) marker = atoi(str.c_str()); - str = s->args.get("max-parts"); + str = s->info.args.get("max-parts"); if (!str.empty()) max_parts = atoi(str.c_str()); @@ -876,16 +876,16 @@ int RGWListMultipart_ObjStore::get_params() int RGWListBucketMultiparts_ObjStore::get_params() { - delimiter = s->args.get("delimiter"); - prefix = s->args.get("prefix"); - string str = s->args.get("max-parts"); + delimiter = s->info.args.get("delimiter"); + prefix = s->info.args.get("prefix"); + string str = s->info.args.get("max-parts"); if (!str.empty()) max_uploads = atoi(str.c_str()); else max_uploads = default_max; - string key_marker = s->args.get("key-marker"); - string upload_id_marker = s->args.get("upload-id-marker"); + string key_marker = s->info.args.get("key-marker"); + string upload_id_marker = s->info.args.get("upload-id-marker"); if (!key_marker.empty()) marker.init(key_marker, upload_id_marker); @@ -994,7 +994,7 @@ static int init_meta_info(struct req_state *s) { const char *p; - s->x_meta_map.clear(); + s->info.x_meta_map.clear(); const char **envp = s->cio->envp(); @@ -1027,22 +1027,22 @@ static int init_meta_info(struct req_state *s) line_unfold(eq + 1, val); map<string, string>::iterator iter; - iter = s->x_meta_map.find(name_low); - if (iter != s->x_meta_map.end()) { + iter = s->info.x_meta_map.find(name_low); + if (iter != s->info.x_meta_map.end()) { string old = iter->second; int pos = old.find_last_not_of(" \t"); /* get rid of any whitespaces after the value */ old = old.substr(0, pos + 1); old.append(","); old.append(val); - s->x_meta_map[name_low] = old; + s->info.x_meta_map[name_low] = old; } else { - s->x_meta_map[name_low] = val; + s->info.x_meta_map[name_low] = val; } } } } map<string, string>::iterator iter; - for (iter = s->x_meta_map.begin(); iter != s->x_meta_map.end(); ++iter) { + for (iter = s->info.x_meta_map.begin(); iter != s->info.x_meta_map.end(); ++iter) { dout(10) << "x>> " << iter->first << ":" << iter->second << dendl; } @@ -1053,7 +1053,7 @@ int RGWHandler_ObjStore::allocate_formatter(struct req_state *s, int default_typ { s->format = default_type; if (configurable) { - string format_str = s->args.get("format"); + string format_str = s->info.args.get("format"); if (format_str.compare("xml") == 0) { s->format = RGW_FORMAT_XML; } else if (format_str.compare("json") == 0) { @@ -1154,7 +1154,7 @@ int RGWHandler_ObjStore::read_permissions(RGWOp *op_obj) case OP_PUT: case OP_POST: /* is it a 'multi-object delete' request? */ - if (s->request_params == "delete") { + if (s->info.request_params == "delete") { only_bucket = true; break; } @@ -1232,20 +1232,14 @@ RGWRESTMgr::~RGWRESTMgr() int RGWREST::preprocess(struct req_state *s, RGWClientIO *cio) { + req_info& info = s->info; + s->cio = cio; - s->script_uri = s->env->get("SCRIPT_URI", s->cct->_conf->rgw_script_uri.c_str()); - s->request_uri = s->env->get("REQUEST_URI", s->cct->_conf->rgw_request_uri.c_str()); - int pos = s->request_uri.find('?'); - if (pos >= 0) { - s->request_params = s->request_uri.substr(pos + 1); - s->request_uri = s->request_uri.substr(0, pos); - } - s->host = s->env->get("HTTP_HOST"); - if (g_conf->rgw_dns_name.length() && s->host) { - string h(s->host); + if (g_conf->rgw_dns_name.length() && info.host) { + string h(s->info.host); - ldout(s->cct, 10) << "host=" << s->host << " rgw_dns_name=" << g_conf->rgw_dns_name << dendl; - pos = h.find(g_conf->rgw_dns_name); + ldout(s->cct, 10) << "host=" << s->info.host << " rgw_dns_name=" << g_conf->rgw_dns_name << dendl; + int pos = h.find(g_conf->rgw_dns_name); if (g_conf->rgw_resolve_cname && pos < 0) { string cname; @@ -1264,16 +1258,15 @@ int RGWREST::preprocess(struct req_state *s, RGWClientIO *cio) if (pos > 0 && h[pos - 1] == '.') { string encoded_bucket = "/"; encoded_bucket.append(h.substr(0, pos-1)); - if (s->request_uri[0] != '/') + if (s->info.request_uri[0] != '/') encoded_bucket.append("/'"); - encoded_bucket.append(s->request_uri); - s->request_uri = encoded_bucket; + encoded_bucket.append(s->info.request_uri); + s->info.request_uri = encoded_bucket; } } - url_decode(s->request_uri, s->decoded_uri); - s->method = s->env->get("REQUEST_METHOD"); - s->length = s->env->get("CONTENT_LENGTH"); + url_decode(s->info.request_uri, s->decoded_uri); + s->length = info.env->get("CONTENT_LENGTH"); if (s->length) { if (*s->length == '\0') s->content_length = 0; @@ -1283,19 +1276,19 @@ int RGWREST::preprocess(struct req_state *s, RGWClientIO *cio) map<string, string>::iterator giter; for (giter = generic_attrs_map.begin(); giter != generic_attrs_map.end(); ++giter) { - const char *env = s->env->get(giter->first.c_str()); + const char *env = info.env->get(giter->first.c_str()); if (env) { s->generic_attrs[giter->second] = env; } } - s->http_auth = s->env->get("HTTP_AUTHORIZATION"); + s->http_auth = info.env->get("HTTP_AUTHORIZATION"); if (g_conf->rgw_print_continue) { - const char *expect = s->env->get("HTTP_EXPECT"); + const char *expect = info.env->get("HTTP_EXPECT"); s->expect_cont = (expect && !strcasecmp(expect, "100-continue")); } - s->op = op_from_method(s->method); + s->op = op_from_method(info.method); init_meta_info(s); diff --git a/src/rgw/rgw_rest_bucket.cc b/src/rgw/rgw_rest_bucket.cc index 73f85d7f292..80b5b876916 100644 --- a/src/rgw/rgw_rest_bucket.cc +++ b/src/rgw/rgw_rest_bucket.cc @@ -228,10 +228,10 @@ void RGWOp_Object_Remove::execute() RGWOp *RGWHandler_Bucket::op_get() { - if (s->args.sub_resource_exists("policy")) + if (s->info.args.sub_resource_exists("policy")) return new RGWOp_Get_Policy; - if (s->args.sub_resource_exists("index")) + if (s->info.args.sub_resource_exists("index")) return new RGWOp_Check_Bucket_Index; return new RGWOp_Bucket_Info; @@ -249,7 +249,7 @@ RGWOp *RGWHandler_Bucket::op_post() RGWOp *RGWHandler_Bucket::op_delete() { - if (s->args.sub_resource_exists("object")) + if (s->info.args.sub_resource_exists("object")) return new RGWOp_Object_Remove; return new RGWOp_Bucket_Remove; diff --git a/src/rgw/rgw_rest_metadata.cc b/src/rgw/rgw_rest_metadata.cc index eb4d107b7f8..18d22f3c20e 100644 --- a/src/rgw/rgw_rest_metadata.cc +++ b/src/rgw/rgw_rest_metadata.cc @@ -28,7 +28,7 @@ const char *RGWOp_Metadata_Get::name() { static inline void frame_metadata_key(req_state *s, string& out) { bool exists; - string key = s->args.get("key", &exists); + string key = s->info.args.get("key", &exists); string metadata_key; string section; @@ -127,7 +127,7 @@ int RGWOp_Metadata_Put::get_data(bufferlist& bl) { bl.append(data, read_len); } else { int chunk_size = CEPH_PAGE_SIZE; - const char *enc = s->env->get("HTTP_TRANSFER_ENCODING"); + const char *enc = s->info.env->get("HTTP_TRANSFER_ENCODING"); if (!enc || strcmp(enc, "chunked")) { return -ERR_LENGTH_REQUIRED; } @@ -181,7 +181,7 @@ void RGWOp_Metadata_Delete::execute() { } RGWOp *RGWHandler_Metadata::op_get() { - if (s->args.exists("key")) + if (s->info.args.exists("key")) return new RGWOp_Metadata_Get; else return new RGWOp_Metadata_List; diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index 2935d245932..51ce032678a 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -99,7 +99,7 @@ int RGWGetObj_ObjStore_S3::send_response_data(bufferlist& bl, off_t bl_ofs, off_ for (struct response_attr_param *p = resp_attr_params; p->param; p++) { bool exists; - string val = s->args.get(p->param, &exists); + string val = s->info.args.get(p->param, &exists); if (exists) { if (strcmp(p->param, "response-content-type") != 0) { response_attrs[p->http_attr] = val; @@ -198,14 +198,14 @@ void RGWListBuckets_ObjStore_S3::send_response_end() int RGWListBucket_ObjStore_S3::get_params() { - prefix = s->args.get("prefix"); - marker = s->args.get("marker"); - max_keys = s->args.get("max-keys"); + prefix = s->info.args.get("prefix"); + marker = s->info.args.get("marker"); + max_keys = s->info.args.get("max-keys"); ret = parse_max_keys(); if (ret < 0) { return ret; } - delimiter = s->args.get("delimiter"); + delimiter = s->info.args.get("delimiter"); return 0; } @@ -298,7 +298,7 @@ static int create_s3_policy(struct req_state *s, RGWRados *store, RGWAccessContr if (!s->canned_acl.empty()) return -ERR_INVALID_REQUEST; - return s3policy.create_from_headers(store, s->env, s->owner); + return s3policy.create_from_headers(store, s->info.env, s->owner); } return s3policy.create_canned(s->owner, s->bucket_owner, s->canned_acl); @@ -782,7 +782,7 @@ void RGWPostObj_ObjStore_S3::rebuild_key(string& key) int RGWPostObj_ObjStore_S3::get_params() { // get the part boundary - string req_content_type_str = s->env->get("CONTENT_TYPE", ""); + string req_content_type_str = s->info.env->get("CONTENT_TYPE", ""); string req_content_type; map<string, string> params; @@ -1183,7 +1183,7 @@ done: if (ret == STATUS_CREATED) { s->formatter->open_object_section("PostResponse"); if (g_conf->rgw_dns_name.length()) - s->formatter->dump_format("Location", "%s/%s", s->script_uri.c_str(), s->object_str.c_str()); + s->formatter->dump_format("Location", "%s/%s", s->info.script_uri.c_str(), s->object_str.c_str()); s->formatter->dump_string("Bucket", s->bucket_name); s->formatter->dump_string("Key", s->object_str.c_str()); s->formatter->close_section(); @@ -1229,10 +1229,10 @@ int RGWCopyObj_ObjStore_S3::init_dest_policy() int RGWCopyObj_ObjStore_S3::get_params() { - if_mod = s->env->get("HTTP_X_AMZ_COPY_IF_MODIFIED_SINCE"); - if_unmod = s->env->get("HTTP_X_AMZ_COPY_IF_UNMODIFIED_SINCE"); - if_match = s->env->get("HTTP_X_AMZ_COPY_IF_MATCH"); - if_nomatch = s->env->get("HTTP_X_AMZ_COPY_IF_NONE_MATCH"); + if_mod = s->info.env->get("HTTP_X_AMZ_COPY_IF_MODIFIED_SINCE"); + if_unmod = s->info.env->get("HTTP_X_AMZ_COPY_IF_UNMODIFIED_SINCE"); + if_match = s->info.env->get("HTTP_X_AMZ_COPY_IF_MATCH"); + if_nomatch = s->info.env->get("HTTP_X_AMZ_COPY_IF_NONE_MATCH"); const char *req_src = s->copy_source; if (!req_src) @@ -1245,7 +1245,7 @@ int RGWCopyObj_ObjStore_S3::get_params() dest_bucket_name = s->bucket.name; dest_object = s->object_str; - const char *md_directive = s->env->get("HTTP_X_AMZ_METADATA_DIRECTIVE"); + const char *md_directive = s->info.env->get("HTTP_X_AMZ_METADATA_DIRECTIVE"); if (md_directive) { if (strcasecmp(md_directive, "COPY") == 0) { replace_attrs = false; @@ -1638,13 +1638,13 @@ RGWOp *RGWHandler_ObjStore_Bucket_S3::get_obj_op(bool get_data) RGWOp *RGWHandler_ObjStore_Bucket_S3::op_get() { - if (s->args.sub_resource_exists("logging")) + if (s->info.args.sub_resource_exists("logging")) return new RGWGetBucketLogging_ObjStore_S3; if (is_acl_op()) { return new RGWGetACLs_ObjStore_S3; } else if (is_cors_op()) { return new RGWGetCORS_ObjStore_S3; - } else if (s->args.exists("uploads")) { + } else if (s->info.args.exists("uploads")) { return new RGWListBucketMultiparts_ObjStore_S3; } return get_obj_op(true); @@ -1654,7 +1654,7 @@ RGWOp *RGWHandler_ObjStore_Bucket_S3::op_head() { if (is_acl_op()) { return new RGWGetACLs_ObjStore_S3; - } else if (s->args.exists("uploads")) { + } else if (s->info.args.exists("uploads")) { return new RGWListBucketMultiparts_ObjStore_S3; } return get_obj_op(false); @@ -1662,7 +1662,7 @@ RGWOp *RGWHandler_ObjStore_Bucket_S3::op_head() RGWOp *RGWHandler_ObjStore_Bucket_S3::op_put() { - if (s->args.sub_resource_exists("logging")) + if (s->info.args.sub_resource_exists("logging")) return NULL; if (is_acl_op()) { return new RGWPutACLs_ObjStore_S3; @@ -1682,7 +1682,7 @@ RGWOp *RGWHandler_ObjStore_Bucket_S3::op_delete() RGWOp *RGWHandler_ObjStore_Bucket_S3::op_post() { - if ( s->request_params == "delete" ) { + if ( s->info.request_params == "delete" ) { return new RGWDeleteMultiObj_ObjStore_S3; } @@ -1708,7 +1708,7 @@ RGWOp *RGWHandler_ObjStore_Obj_S3::op_get() { if (is_acl_op()) { return new RGWGetACLs_ObjStore_S3; - } else if (s->args.exists("uploadId")) { + } else if (s->info.args.exists("uploadId")) { return new RGWListMultipart_ObjStore_S3; } return get_obj_op(true); @@ -1718,7 +1718,7 @@ RGWOp *RGWHandler_ObjStore_Obj_S3::op_head() { if (is_acl_op()) { return new RGWGetACLs_ObjStore_S3; - } else if (s->args.exists("uploadId")) { + } else if (s->info.args.exists("uploadId")) { return new RGWListMultipart_ObjStore_S3; } return get_obj_op(false); @@ -1737,7 +1737,7 @@ RGWOp *RGWHandler_ObjStore_Obj_S3::op_put() RGWOp *RGWHandler_ObjStore_Obj_S3::op_delete() { - string upload_id = s->args.get("uploadId"); + string upload_id = s->info.args.get("uploadId"); if (upload_id.empty()) return new RGWDeleteObj_ObjStore_S3; @@ -1747,10 +1747,10 @@ RGWOp *RGWHandler_ObjStore_Obj_S3::op_delete() RGWOp *RGWHandler_ObjStore_Obj_S3::op_post() { - if (s->args.exists("uploadId")) + if (s->info.args.exists("uploadId")) return new RGWCompleteMultipart_ObjStore_S3; - if (s->args.exists("uploads")) + if (s->info.args.exists("uploads")) return new RGWInitMultipart_ObjStore_S3; return NULL; @@ -1772,11 +1772,11 @@ int RGWHandler_ObjStore_S3::init_from_header(struct req_state *s, int default_fo if (*req_name == '?') { p = req_name; } else { - p = s->request_params.c_str(); + p = s->info.request_params.c_str(); } - s->args.set(p); - s->args.parse(); + s->info.args.set(p); + s->info.args.parse(); /* must be called after the args parsing */ int ret = allocate_formatter(s, default_formatter, configurable_format); @@ -1888,13 +1888,13 @@ int RGWHandler_ObjStore_S3::init(RGWRados *store, struct req_state *s, RGWClient if (ret) return ret; - const char *cacl = s->env->get("HTTP_X_AMZ_ACL"); + const char *cacl = s->info.env->get("HTTP_X_AMZ_ACL"); if (cacl) s->canned_acl = cacl; - s->has_acl_header = s->env->exists_prefix("HTTP_X_AMZ_GRANT"); + s->has_acl_header = s->info.env->exists_prefix("HTTP_X_AMZ_GRANT"); - s->copy_source = s->env->get("HTTP_X_AMZ_COPY_SOURCE"); + s->copy_source = s->info.env->get("HTTP_X_AMZ_COPY_SOURCE"); s->dialect = "s3"; @@ -2020,9 +2020,9 @@ void rgw_create_s3_auth_header(const char *method, const char *content_md5, cons * get the header authentication information required to * compute a request's signature */ -static bool get_auth_header(struct req_state *s, string& dest, bool qsr) +static bool get_auth_header(req_info& info, utime_t& header_time, string& dest, bool qsr) { - const char *content_md5 = s->env->get("HTTP_CONTENT_MD5"); + const char *content_md5 = info.env->get("HTTP_CONTENT_MD5"); if (content_md5) { for (const char *p = content_md5; *p; p++) { if (!is_base64_for_content_md5(*p)) { @@ -2032,18 +2032,18 @@ static bool get_auth_header(struct req_state *s, string& dest, bool qsr) } } - const char *content_type = s->env->get("CONTENT_TYPE"); + const char *content_type = info.env->get("CONTENT_TYPE"); string date; if (qsr) { - date = s->args.get("Expires"); + date = info.args.get("Expires"); } else { - const char *str = s->env->get("HTTP_DATE"); + const char *str = info.env->get("HTTP_DATE"); const char *req_date = str; if (str) { date = str; } else { - req_date = s->env->get("HTTP_X_AMZ_DATE"); + req_date = info.env->get("HTTP_X_AMZ_DATE"); if (!req_date) { dout(0) << "NOTICE: missing date for auth header" << dendl; return false; @@ -2059,14 +2059,14 @@ static bool get_auth_header(struct req_state *s, string& dest, bool qsr) dout(0) << "NOTICE: bad date (predates epoch): " << req_date << dendl; return false; } - s->header_time = utime_t(timegm(&t), 0); + header_time = utime_t(timegm(&t), 0); } - map<string, string>& meta_map = s->x_meta_map; - map<string, string>& sub_resources = s->args.get_sub_resources(); + map<string, string>& meta_map = info.x_meta_map; + map<string, string>& sub_resources = info.args.get_sub_resources(); - rgw_create_s3_auth_header(s->method, content_md5, content_type, date.c_str(), - meta_map, s->request_uri.c_str(), sub_resources, + rgw_create_s3_auth_header(info.method, content_md5, content_type, date.c_str(), + meta_map, info.request_uri.c_str(), sub_resources, dest); return true; @@ -2086,11 +2086,11 @@ int RGW_Auth_S3::authorize(RGWRados *store, struct req_state *s) time(&now); if (!s->http_auth || !(*s->http_auth)) { - auth_id = s->args.get("AWSAccessKeyId"); + auth_id = s->info.args.get("AWSAccessKeyId"); if (auth_id.size()) { - auth_sign = s->args.get("Signature"); + auth_sign = s->info.args.get("Signature"); - string date = s->args.get("Expires"); + string date = s->info.args.get("Expires"); time_t exp = atoll(date.c_str()); if (now >= exp) return -EPERM; @@ -2127,7 +2127,7 @@ int RGW_Auth_S3::authorize(RGWRados *store, struct req_state *s) /* now verify signature */ string auth_hdr; - if (!get_auth_header(s, auth_hdr, qsr)) { + if (!get_auth_header(s->info, s->header_time, auth_hdr, qsr)) { dout(10) << "failed to create auth header\n" << auth_hdr << dendl; return -EPERM; } @@ -2181,7 +2181,7 @@ int RGW_Auth_S3::authorize(RGWRados *store, struct req_state *s) return -EPERM; if (s->user.system) { - string effective_uid = s->args.get("rgwx-uid"); + string effective_uid = s->info.args.get("rgwx-uid"); RGWUserInfo effective_user; if (!effective_uid.empty()) { ret = rgw_get_user_info_by_uid(store, effective_uid, effective_user); diff --git a/src/rgw/rgw_rest_s3.h b/src/rgw/rgw_rest_s3.h index d2f9d7f4baf..e2a1b0b92eb 100644 --- a/src/rgw/rgw_rest_s3.h +++ b/src/rgw/rgw_rest_s3.h @@ -306,10 +306,10 @@ public: class RGWHandler_ObjStore_Bucket_S3 : public RGWHandler_ObjStore_S3 { protected: bool is_acl_op() { - return s->args.exists("acl"); + return s->info.args.exists("acl"); } bool is_cors_op() { - return s->args.exists("cors"); + return s->info.args.exists("cors"); } bool is_obj_update_op() { return is_acl_op() || is_cors_op(); @@ -330,10 +330,10 @@ public: class RGWHandler_ObjStore_Obj_S3 : public RGWHandler_ObjStore_S3 { protected: bool is_acl_op() { - return s->args.exists("acl"); + return s->info.args.exists("acl"); } bool is_cors_op() { - return s->args.exists("cors"); + return s->info.args.exists("cors"); } bool is_obj_update_op() { return is_acl_op(); diff --git a/src/rgw/rgw_rest_swift.cc b/src/rgw/rgw_rest_swift.cc index 051060a5a20..157158e7ed7 100644 --- a/src/rgw/rgw_rest_swift.cc +++ b/src/rgw/rgw_rest_swift.cc @@ -14,9 +14,9 @@ int RGWListBuckets_ObjStore_SWIFT::get_params() { - marker = s->args.get("marker"); + marker = s->info.args.get("marker"); string limit_str; - limit_str = s->args.get("limit"); + limit_str = s->info.args.get("limit"); long l = strtol(limit_str.c_str(), NULL, 10); if (l > (long)limit_max || l < 0) return -ERR_PRECONDITION_FAILED; @@ -30,7 +30,7 @@ int RGWListBuckets_ObjStore_SWIFT::get_params() if (need_stats) { bool stats, exists; - int r = s->args.get_bool("stats", &stats, &exists); + int r = s->info.args.get_bool("stats", &stats, &exists); if (r < 0) return r; @@ -93,9 +93,9 @@ void RGWListBuckets_ObjStore_SWIFT::send_response_end() int RGWListBucket_ObjStore_SWIFT::get_params() { - prefix = s->args.get("prefix"); - marker = s->args.get("marker"); - max_keys = s->args.get("limit"); + prefix = s->info.args.get("prefix"); + marker = s->info.args.get("marker"); + max_keys = s->info.args.get("limit"); ret = parse_max_keys(); if (ret < 0) { return ret; @@ -103,11 +103,11 @@ int RGWListBucket_ObjStore_SWIFT::get_params() if (max > default_max) return -ERR_PRECONDITION_FAILED; - delimiter = s->args.get("delimiter"); + delimiter = s->info.args.get("delimiter"); string path_args; - if (s->args.exists("path")) { // should handle empty path - path_args = s->args.get("path"); + if (s->info.args.exists("path")) { // should handle empty path + path_args = s->info.args.get("path"); if (!delimiter.empty() || !prefix.empty()) { return -EINVAL; } @@ -321,14 +321,14 @@ int RGWPutObj_ObjStore_SWIFT::get_params() return -EINVAL; if (!s->length) { - const char *encoding = s->env->get("HTTP_TRANSFER_ENCODING"); + const char *encoding = s->info.env->get("HTTP_TRANSFER_ENCODING"); if (!encoding || strcmp(encoding, "chunked") != 0) return -ERR_LENGTH_REQUIRED; chunked_upload = true; } - supplied_etag = s->env->get("HTTP_ETAG"); + supplied_etag = s->info.env->get("HTTP_ETAG"); if (!s->generic_attrs.count(RGW_ATTR_CONTENT_TYPE)) { dout(5) << "content type wasn't provided, trying to guess" << dendl; @@ -347,7 +347,7 @@ int RGWPutObj_ObjStore_SWIFT::get_params() policy.create_default(s->user.user_id, s->user.display_name); - obj_manifest = s->env->get("HTTP_X_OBJECT_MANIFEST"); + obj_manifest = s->info.env->get("HTTP_X_OBJECT_MANIFEST"); return RGWPutObj_ObjStore::get_params(); } @@ -371,11 +371,11 @@ int RGWPutMetadata_ObjStore_SWIFT::get_params() if (!s->object) { string read_list, write_list; - const char *read_attr = s->env->get("HTTP_X_CONTAINER_READ"); + const char *read_attr = s->info.env->get("HTTP_X_CONTAINER_READ"); if (read_attr) { read_list = read_attr; } - const char *write_attr = s->env->get("HTTP_X_CONTAINER_WRITE"); + const char *write_attr = s->info.env->get("HTTP_X_CONTAINER_WRITE"); if (write_attr) { write_list = write_attr; } @@ -391,10 +391,10 @@ int RGWPutMetadata_ObjStore_SWIFT::get_params() } /*Check and update CORS configuration*/ - const char *allow_origins = s->env->get("HTTP_X_CONTAINER_META_ACCESS_CONTROL_ALLOW_ORIGIN"); - const char *allow_headers = s->env->get("HTTP_X_CONTAINER_META_ACCESS_CONTROL_ALLOW_HEADERS"); - const char *expose_headers = s->env->get("HTTP_X_CONTAINER_META_ACCESS_CONTROL_EXPOSE_HEADERS"); - const char *max_age = s->env->get("HTTP_X_CONTAINER_META_ACCESS_CONTROL_MAX_AGE"); + const char *allow_origins = s->info.env->get("HTTP_X_CONTAINER_META_ACCESS_CONTROL_ALLOW_ORIGIN"); + const char *allow_headers = s->info.env->get("HTTP_X_CONTAINER_META_ACCESS_CONTROL_ALLOW_HEADERS"); + const char *expose_headers = s->info.env->get("HTTP_X_CONTAINER_META_ACCESS_CONTROL_EXPOSE_HEADERS"); + const char *max_age = s->info.env->get("HTTP_X_CONTAINER_META_ACCESS_CONTROL_MAX_AGE"); if (allow_origins) { RGWCORSConfiguration_SWIFT *swift_cors = new RGWCORSConfiguration_SWIFT; int r = swift_cors->create_update(allow_origins, allow_headers, expose_headers, max_age); @@ -444,13 +444,13 @@ int RGWCopyObj_ObjStore_SWIFT::init_dest_policy() int RGWCopyObj_ObjStore_SWIFT::get_params() { - if_mod = s->env->get("HTTP_IF_MODIFIED_SINCE"); - if_unmod = s->env->get("HTTP_IF_UNMODIFIED_SINCE"); - if_match = s->env->get("HTTP_COPY_IF_MATCH"); - if_nomatch = s->env->get("HTTP_COPY_IF_NONE_MATCH"); + if_mod = s->info.env->get("HTTP_IF_MODIFIED_SINCE"); + if_unmod = s->info.env->get("HTTP_IF_UNMODIFIED_SINCE"); + if_match = s->info.env->get("HTTP_COPY_IF_MATCH"); + if_nomatch = s->info.env->get("HTTP_COPY_IF_NONE_MATCH"); if (s->op == OP_COPY) { - const char *req_dest = s->env->get("HTTP_DESTINATION"); + const char *req_dest = s->info.env->get("HTTP_DESTINATION"); if (!req_dest) return -ERR_BAD_URL; @@ -772,11 +772,11 @@ int RGWHandler_ObjStore_SWIFT::init_from_header(struct req_state *s) if (*req_name == '?') { p = req_name; } else { - p = s->request_params.c_str(); + p = s->info.request_params.c_str(); } - s->args.set(p); - s->args.parse(); + s->info.args.set(p); + s->info.args.parse(); if (*req_name != '/') return 0; @@ -820,7 +820,7 @@ int RGWHandler_ObjStore_SWIFT::init_from_header(struct req_state *s) string ver; next_tok(req, ver, '/'); - s->os_auth_token = s->env->get("HTTP_X_AUTH_TOKEN"); + s->os_auth_token = s->info.env->get("HTTP_X_AUTH_TOKEN"); next_tok(req, first, '/'); dout(10) << "ver=" << ver << " first=" << first << " req=" << req << dendl; @@ -848,7 +848,7 @@ int RGWHandler_ObjStore_SWIFT::init(RGWRados *store, struct req_state *s, RGWCli if (ret) return ret; - s->copy_source = s->env->get("HTTP_X_COPY_FROM"); + s->copy_source = s->info.env->get("HTTP_X_COPY_FROM"); s->dialect = "swift"; diff --git a/src/rgw/rgw_rest_user.cc b/src/rgw/rgw_rest_user.cc index daf674be7fe..ac0d794846c 100644 --- a/src/rgw/rgw_rest_user.cc +++ b/src/rgw/rgw_rest_user.cc @@ -115,10 +115,10 @@ void RGWOp_User_Create::execute() if (max_buckets != RGW_DEFAULT_MAX_BUCKETS) op_state.set_max_buckets(max_buckets); - if (s->args.exists("suspended")) + if (s->info.args.exists("suspended")) op_state.set_suspension(suspended); - if (s->args.exists("system")) + if (s->info.args.exists("system")) op_state.set_system(system); if (gen_key) @@ -212,10 +212,10 @@ void RGWOp_User_Modify::execute() op_state.set_key_type(key_type); } - if (s->args.exists("suspended")) + if (s->info.args.exists("suspended")) op_state.set_suspension(suspended); - if (s->args.exists("system")) + if (s->info.args.exists("system")) op_state.set_system(system); http_ret = RGWUserAdminOp_User::modify(store, op_state, flusher); @@ -616,13 +616,13 @@ RGWOp *RGWHandler_User::op_get() RGWOp *RGWHandler_User::op_put() { - if (s->args.sub_resource_exists("subuser")) + if (s->info.args.sub_resource_exists("subuser")) return new RGWOp_Subuser_Create; - if (s->args.sub_resource_exists("key")) + if (s->info.args.sub_resource_exists("key")) return new RGWOp_Key_Create; - if (s->args.sub_resource_exists("caps")) + if (s->info.args.sub_resource_exists("caps")) return new RGWOp_Caps_Add; return new RGWOp_User_Create; @@ -630,7 +630,7 @@ RGWOp *RGWHandler_User::op_put() RGWOp *RGWHandler_User::op_post() { - if (s->args.sub_resource_exists("subuser")) + if (s->info.args.sub_resource_exists("subuser")) return new RGWOp_Subuser_Modify; return new RGWOp_User_Modify; @@ -638,13 +638,13 @@ RGWOp *RGWHandler_User::op_post() RGWOp *RGWHandler_User::op_delete() { - if (s->args.sub_resource_exists("subuser")) + if (s->info.args.sub_resource_exists("subuser")) return new RGWOp_Subuser_Remove; - if (s->args.sub_resource_exists("key")) + if (s->info.args.sub_resource_exists("key")) return new RGWOp_Key_Remove; - if (s->args.sub_resource_exists("caps")) + if (s->info.args.sub_resource_exists("caps")) return new RGWOp_Caps_Remove; return new RGWOp_User_Remove; diff --git a/src/rgw/rgw_swift_auth.cc b/src/rgw/rgw_swift_auth.cc index b0be5d45938..3ac2bba8c04 100644 --- a/src/rgw/rgw_swift_auth.cc +++ b/src/rgw/rgw_swift_auth.cc @@ -131,8 +131,8 @@ void RGW_SWIFT_Auth_Get::execute() { int ret = -EPERM; - const char *key = s->env->get("HTTP_X_AUTH_KEY"); - const char *user = s->env->get("HTTP_X_AUTH_USER"); + const char *key = s->info.env->get("HTTP_X_AUTH_KEY"); + const char *user = s->info.env->get("HTTP_X_AUTH_USER"); string user_str; RGWUserInfo info; @@ -149,17 +149,17 @@ void RGW_SWIFT_Auth_Get::execute() if (swift_url.size() == 0) { bool add_port = false; - const char *server_port = s->env->get("SERVER_PORT_SECURE"); + const char *server_port = s->info.env->get("SERVER_PORT_SECURE"); const char *protocol; if (server_port) { add_port = (strcmp(server_port, "443") != 0); protocol = "https"; } else { - server_port = s->env->get("SERVER_PORT"); + server_port = s->info.env->get("SERVER_PORT"); add_port = (strcmp(server_port, "80") != 0); protocol = "http"; } - const char *host = s->env->get("HTTP_HOST"); + const char *host = s->info.env->get("HTTP_HOST"); if (!host) { dout(0) << "NOTICE: server is misconfigured, missing rgw_swift_url_prefix or rgw_swift_url, HTTP_HOST is not set" << dendl; ret = -EINVAL; |