summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYehuda Sadeh <yehuda@inktank.com>2013-05-23 11:39:13 -0700
committerYehuda Sadeh <yehuda@inktank.com>2013-05-23 11:39:13 -0700
commitc812bb513aceb3be4ee858df36d3bbab45afccc0 (patch)
treed04a2198cb38c1a7fbf5805c51b383e64f3aacd5
parent87eaaab68fd01046706ab4b320030008b1798167 (diff)
downloadceph-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.am3
-rw-r--r--src/rgw/rgw_common.cc21
-rw-r--r--src/rgw/rgw_common.h26
-rw-r--r--src/rgw/rgw_log.cc2
-rw-r--r--src/rgw/rgw_main.cc6
-rw-r--r--src/rgw/rgw_op.cc32
-rw-r--r--src/rgw/rgw_op.h2
-rw-r--r--src/rgw/rgw_rest.cc109
-rw-r--r--src/rgw/rgw_rest_bucket.cc6
-rw-r--r--src/rgw/rgw_rest_metadata.cc6
-rw-r--r--src/rgw/rgw_rest_s3.cc90
-rw-r--r--src/rgw/rgw_rest_s3.h8
-rw-r--r--src/rgw/rgw_rest_swift.cc56
-rw-r--r--src/rgw/rgw_rest_user.cc22
-rw-r--r--src/rgw/rgw_swift_auth.cc10
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;