]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix certain return status cases in CORS
authorYehuda Sadeh <yehuda@inktank.com>
Thu, 29 Aug 2013 04:25:20 +0000 (21:25 -0700)
committerYehuda Sadeh <yehuda@inktank.com>
Wed, 11 Sep 2013 16:45:14 +0000 (09:45 -0700)
Change return values in certain cases, reorder
checks, etc.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
src/rgw/rgw_op.cc
src/rgw/rgw_rest_s3.cc

index 707e7a745e70032c0818e643ba9eddb3ff0112e8..b5ed3e7fd6fd48fe9234097bdae5e493a061754c 100644 (file)
@@ -2043,7 +2043,7 @@ int RGWOptionsCORS::validate_cors_request(RGWCORSConfiguration *cc) {
   }
 
   if (!validate_cors_rule_method(rule, req_meth)) {
-    return -ENOTSUP;
+    return -ENOENT;
   }
   return 0;
 }
@@ -2059,12 +2059,7 @@ void RGWOptionsCORS::execute()
     dout(0) << 
     "Preflight request without mandatory Origin header"
     << dendl;
-    ret = -EACCES;
-    return;
-  }
-  if (!cors_exist) {
-    dout(2) << "No CORS configuration set yet for this bucket" << dendl;
-    ret = -ENOENT;
+    ret = -EINVAL;
     return;
   }
   req_meth = s->info.env->get("HTTP_ACCESS_CONTROL_REQUEST_METHOD");
@@ -2072,7 +2067,12 @@ void RGWOptionsCORS::execute()
     dout(0) << 
     "Preflight request without mandatory Access-control-request-method header"
     << dendl;
-    ret = -EACCES;
+    ret = -EINVAL;
+    return;
+  }
+  if (!cors_exist) {
+    dout(2) << "No CORS configuration set yet for this bucket" << dendl;
+    ret = -ENOENT;
     return;
   }
   req_hdrs = s->info.env->get("HTTP_ACCESS_CONTROL_ALLOW_HEADERS");
index 9e95dd95542dc2aa84fbc3de9cfcb98dba7d7f18..913866e3996e714a9483fbc024e37f343c74d644 100644 (file)
@@ -1491,18 +1491,16 @@ void RGWOptionsCORS_ObjStore_S3::send_response()
   uint32_t max_age = CORS_MAX_AGE_INVALID;
   /*EACCES means, there is no CORS registered yet for the bucket
    *ENOENT means, there is no match of the Origin in the list of CORSRule
-   *ENOTSUPP means, the HTTP_METHOD is not supported
    */
   if (ret == -ENOENT)
     ret = -EACCES;
-  if (ret != -EACCES) {
-    get_response_params(hdrs, exp_hdrs, &max_age);
-  } else {
+  if (ret < 0) {
     set_req_state_err(s, ret);
     dump_errno(s);
     end_header(s, NULL);
     return;
   }
+  get_response_params(hdrs, exp_hdrs, &max_age);
 
   dump_errno(s);
   dump_access_control(s, origin, req_meth, hdrs.c_str(), exp_hdrs.c_str(), max_age);