summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYehuda Sadeh <yehuda@inktank.com>2013-08-28 21:25:20 -0700
committerYehuda Sadeh <yehuda@inktank.com>2013-09-04 16:11:21 -0700
commit6af5a5377f9730aeee3fc1432445becea47794dd (patch)
tree9c70693488101e34e1f1424dce4f002acea55c6b
parent6ae4049a09143b0d364c03c5185f9cdc0e449e2f (diff)
downloadceph-6af5a5377f9730aeee3fc1432445becea47794dd.tar.gz
rgw: fix certain return status cases in CORS
Change return values in certain cases, reorder checks, etc. Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
-rw-r--r--src/rgw/rgw_op.cc16
-rw-r--r--src/rgw/rgw_rest_s3.cc6
2 files changed, 10 insertions, 12 deletions
diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc
index 97f62874ffb..15e51712ca3 100644
--- a/src/rgw/rgw_op.cc
+++ b/src/rgw/rgw_op.cc
@@ -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");
diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc
index c44eba5853c..d3ce9609d76 100644
--- a/src/rgw/rgw_rest_s3.cc
+++ b/src/rgw/rgw_rest_s3.cc
@@ -1486,18 +1486,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);