From: Yehuda Sadeh Date: Thu, 29 Aug 2013 04:25:20 +0000 (-0700) Subject: rgw: fix certain return status cases in CORS X-Git-Tag: v0.69~14^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6af5a5377f9730aeee3fc1432445becea47794dd;p=ceph.git rgw: fix certain return status cases in CORS Change return values in certain cases, reorder checks, etc. Signed-off-by: Yehuda Sadeh --- diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 97f62874ffb6..15e51712ca39 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 c44eba5853c2..d3ce9609d768 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);