]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: separate certain request info into different structure
authorYehuda Sadeh <yehuda@inktank.com>
Thu, 23 May 2013 18:39:13 +0000 (11:39 -0700)
committerYehuda Sadeh <yehuda@inktank.com>
Thu, 23 May 2013 18:39:13 +0000 (11:39 -0700)
This is needed for later request forwarding.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
15 files changed:
src/Makefile.am
src/rgw/rgw_common.cc
src/rgw/rgw_common.h
src/rgw/rgw_log.cc
src/rgw/rgw_main.cc
src/rgw/rgw_op.cc
src/rgw/rgw_op.h
src/rgw/rgw_rest.cc
src/rgw/rgw_rest_bucket.cc
src/rgw/rgw_rest_metadata.cc
src/rgw/rgw_rest_s3.cc
src/rgw/rgw_rest_s3.h
src/rgw/rgw_rest_swift.cc
src/rgw/rgw_rest_user.cc
src/rgw/rgw_swift_auth.cc

index befa68dda207c222e2db385bc4dcb2a8955e38d2..360722e2b0186732059e51702a2b66b5e8fcb6b2 100644 (file)
@@ -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
index 73a43430dcd75cfbf6bb36bb653739a99c535c9e..64e052f517c1d3a61c8ebc4015e488374cddb627 100644 (file)
@@ -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;
index 1383d2b914c1b2bd5a78f8c5548207e562b45e1a..dc1b0a13bb4613e2f6598ceb50d06a400b0785c1 100644 (file)
@@ -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();
 };
index 09fdacf4f2f87b036b4d813b304bc1cc41c39cf9..16f5f64a5723e5dfc44ac4fc62ac632672b33bf9 100644 (file)
@@ -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;
 }
index bcf740d32b1c43f0e5459a09e6b8d04afb279938..87209bc54d91882ecda7439d075603a1fa53c02b 100644 (file)
@@ -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;
index fe293c0ef9972d7e670f2fcc17a60247108ab107..b038044ae0e9b13070126ca059f04b4fc38f8097 100644 (file)
@@ -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;
index e580e0b4895635d3979eb0fbdab355f7db765c35..f678f3be6b026caf07aa2075ecb99087c0fb78cb 100644 (file)
@@ -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.
index 9f093bac1d22357491427f0cf5e12e789b6b8638..764614337747efca2295d0659eccba356f68f85c 100644 (file)
@@ -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);
 
index 73f85d7f2925918d30a0c5ef7b58a08fe0d788a2..80b5b876916fe9478c61b332a5ec53a538fa9870 100644 (file)
@@ -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;
index eb4d107b7f8ae26449fa6f3566f34c1b1a095a17..18d22f3c20eea11eaf689a5441b794ca9d431567 100644 (file)
@@ -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;
index 2935d245932cc01f81a4b39dcd2ff85b6b5293d5..51ce032678a85b3fabec94e8181bd5b88bc97f7e 100644 (file)
@@ -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);
index d2f9d7f4baf701724530f646dd7b1dbae5d54d05..e2a1b0b92eb5faf25e1fb6741e227f79b4025abc 100644 (file)
@@ -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();
index 051060a5a20075e60128e0dc463ec9e486b14667..157158e7ed7d7a148f0339afeb7cb467ed780a07 100644 (file)
@@ -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";
 
index daf674be7fe5d210e326c3cc6a73e63a34a6290b..ac0d794846c20d9262d485156f688fbf36b37be7 100644 (file)
@@ -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;
index b0be5d459387248ffcbb7d9e2e43fbb067c99585..3ac2bba8c04b7af988f3f6de4dfb26efa466ccc1 100644 (file)
@@ -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;