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 <tianshan@xsky.com>
(cherry picked from commit
9b7025857026c64cf076e82d762556ac2bcd2625)
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;