From: Tianshan Qu Date: Fri, 31 May 2019 10:37:44 +0000 (+0800) Subject: rgw: fix miss handle curl error return X-Git-Tag: v14.2.2~39^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=21d6c307b9af2722f918096dd6d3c4dd787dc846;p=ceph.git rgw: fix miss handle curl error return if meet tcp packet loss, curl return will be result=18(CURLE_PARTIAL_FILE) and http_status=200, so sync will continue and cause content miss match. Fixes: https://tracker.ceph.com/issues/39992 Signed-off-by: Tianshan Qu (cherry picked from commit 9b7025857026c64cf076e82d762556ac2bcd2625) --- diff --git a/src/rgw/rgw_http_client.cc b/src/rgw/rgw_http_client.cc index 50fe7915099..d0f0baead6e 100644 --- a/src/rgw/rgw_http_client.cc +++ b/src/rgw/rgw_http_client.cc @@ -1141,7 +1141,8 @@ void *RGWHTTPManager::reqs_thread_entry() curl_easy_getinfo(e, CURLINFO_RESPONSE_CODE, (void **)&http_status); int status = rgw_http_error_to_errno(http_status); - if (result != CURLE_OK && http_status == 0) { + if (result != CURLE_OK && status == 0) { + dout(0) << "ERROR: curl error: " << curl_easy_strerror((CURLcode)result) << ", maybe network unstable" << dendl; status = -EAGAIN; } int id = req_data->id;