diff options
author | Yehuda Sadeh <yehuda@inktank.com> | 2013-08-28 21:25:20 -0700 |
---|---|---|
committer | Yehuda Sadeh <yehuda@inktank.com> | 2013-09-04 16:03:22 -0700 |
commit | a98d02bd009c47707cfc4f9042c25e80db281656 (patch) | |
tree | 89ff2336d8a1a43f45c79cf07ccbdede3517874e | |
parent | 3c45178b45d66f575417d792c07b11212e7f0ee2 (diff) | |
download | ceph-wip-6078-dumpling.tar.gz |
rgw: fix certain return status cases in CORSwip-6078-dumpling
Change return values in certain cases, reorder
checks, etc.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
-rw-r--r-- | src/rgw/rgw_op.cc | 16 | ||||
-rw-r--r-- | src/rgw/rgw_rest_s3.cc | 6 |
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); |