Skip to content

Commit b5cd68e

Browse files
committed
fix 500 retry
1 parent 96aa147 commit b5cd68e

File tree

2 files changed

+37
-33
lines changed

2 files changed

+37
-33
lines changed

configure.ac

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
dnl Process this file with autoconf to produce a configure script.
1919

2020
AC_PREREQ(2.59)
21-
AC_INIT(cosfs, 1.0.2)
21+
AC_INIT(cosfs, 1.0.3)
2222
AC_CONFIG_HEADER([config.h])
2323

2424
AC_CANONICAL_SYSTEM

src/curl.cpp

Lines changed: 36 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,7 @@ string S3fsCurl::LookupMimeType(string name)
609609
}
610610

611611
// neither the last extension nor the second-to-last extension
612-
// matched a mimeType, return the default mime type
612+
// matched a mimeType, return the default mime type
613613
return result;
614614
}
615615

@@ -618,7 +618,7 @@ bool S3fsCurl::LocateBundle(void)
618618
// See if environment variable CURL_CA_BUNDLE is set
619619
// if so, check it, if it is a good path, then set the
620620
// curl_ca_bundle variable to it
621-
char *CURL_CA_BUNDLE;
621+
char *CURL_CA_BUNDLE;
622622

623623
if(0 == S3fsCurl::curl_ca_bundle.size()){
624624
CURL_CA_BUNDLE = getenv("CURL_CA_BUNDLE");
@@ -630,7 +630,7 @@ bool S3fsCurl::LocateBundle(void)
630630
return false;
631631
}
632632
BF.close();
633-
S3fsCurl::curl_ca_bundle.assign(CURL_CA_BUNDLE);
633+
S3fsCurl::curl_ca_bundle.assign(CURL_CA_BUNDLE);
634634
return true;
635635
}
636636
}
@@ -651,10 +651,10 @@ bool S3fsCurl::LocateBundle(void)
651651
// dnl /usr/local/share/certs/ca-root.crt FreeBSD
652652
// dnl /etc/ssl/cert.pem OpenBSD
653653
// dnl /etc/ssl/certs/ (ca path) SUSE
654-
ifstream BF("/etc/pki/tls/certs/ca-bundle.crt");
654+
ifstream BF("/etc/pki/tls/certs/ca-bundle.crt");
655655
if(BF.good()){
656656
BF.close();
657-
S3fsCurl::curl_ca_bundle.assign("/etc/pki/tls/certs/ca-bundle.crt");
657+
S3fsCurl::curl_ca_bundle.assign("/etc/pki/tls/certs/ca-bundle.crt");
658658
}else{
659659
S3FS_PRN_ERR("%s: /etc/pki/tls/certs/ca-bundle.crt is not readable", program_name.c_str());
660660
return false;
@@ -927,7 +927,7 @@ bool S3fsCurl::SetSseKmsid(const char* kmsid)
927927
}
928928

929929
// [NOTE]
930-
// Because SSE is set by some options and environment,
930+
// Because SSE is set by some options and environment,
931931
// this function check the integrity of the SSE data finally.
932932
bool S3fsCurl::FinalCheckSse(void)
933933
{
@@ -956,7 +956,7 @@ bool S3fsCurl::FinalCheckSse(void)
956956
}
957957
return true;
958958
}
959-
959+
960960
bool S3fsCurl::LoadEnvSseCKeys(void)
961961
{
962962
char* envkeys = getenv("OSSSSECKEYS");
@@ -1048,7 +1048,7 @@ bool S3fsCurl::checkSTSCredentialUpdate(void) {
10481048
if (time(NULL) <= S3fsCurl::COSAccessTokenExpire) {
10491049
return true;
10501050
}
1051-
1051+
10521052
// if return value is not equal 1, means wrong format key
10531053
if (check_for_cos_format() != 1) {
10541054
return false;
@@ -1282,7 +1282,11 @@ S3fsCurl* S3fsCurl::ParallelGetObjectRetryCallback(S3fsCurl* s3fscurl)
12821282

12831283
// duplicate request(setup new curl object)
12841284
S3fsCurl* newcurl = new S3fsCurl(s3fscurl->IsUseAhbe());
1285-
if(0 != (result = newcurl->PreGetObjectRequest(s3fscurl->path.c_str(), s3fscurl->partdata.fd,
1285+
std::string path = s3fscurl->path;
1286+
if (path.size() >= mount_prefix.size() && path.substr(0, mount_prefix.size()) == mount_prefix) {
1287+
path = path.substr(mount_prefix.size());
1288+
}
1289+
if(0 != (result = newcurl->PreGetObjectRequest(path.c_str(), s3fscurl->partdata.fd,
12861290
s3fscurl->partdata.startpos, s3fscurl->partdata.size, s3fscurl->b_ssetype, s3fscurl->b_ssevalue)))
12871291
{
12881292
S3FS_PRN_ERR("failed downloading part setup(%d)", result);
@@ -1461,7 +1465,7 @@ int S3fsCurl::CurlDebugFunc(CURL* hcurl, curl_infotype type, char* data, size_t
14611465
//-------------------------------------------------------------------
14621466
// Methods for S3fsCurl
14631467
//-------------------------------------------------------------------
1464-
S3fsCurl::S3fsCurl(bool ahbe) :
1468+
S3fsCurl::S3fsCurl(bool ahbe) :
14651469
hCurl(NULL), path(""), base_path(""), saved_path(""), url(""), requestHeaders(NULL),
14661470
bodydata(NULL), headdata(NULL), LastResponseCode(-1), postdata(NULL), postdata_remaining(0), is_use_ahbe(ahbe),
14671471
retry_count(0), b_infile(NULL), b_postdata(NULL), b_postdata_remaining(0), b_partdata_startpos(0), b_partdata_size(0),
@@ -1704,7 +1708,7 @@ bool S3fsCurl::RemakeHandle(void)
17041708

17051709
case REQTYPE_CHKBUCKET:
17061710
curl_easy_setopt(hCurl, CURLOPT_URL, url.c_str());
1707-
// XXX
1711+
// XXX
17081712
//curl_easy_setopt(hCurl, CURLOPT_FAILONERROR, true);
17091713
curl_easy_setopt(hCurl, CURLOPT_WRITEDATA, (void*)bodydata);
17101714
curl_easy_setopt(hCurl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
@@ -1805,8 +1809,8 @@ int S3fsCurl::RequestPerform(void)
18051809
for(int retrycnt = S3fsCurl::retries; 0 < retrycnt; retrycnt--){
18061810
// Requests
18071811
// XXX
1808-
//curl_easy_setopt(hCurl, CURLOPT_HEADERDATA, (void*)&responseHeaders);
1809-
//curl_easy_setopt(hCurl, CURLOPT_HEADERFUNCTION, HeaderCallback);
1812+
//curl_easy_setopt(hCurl, CURLOPT_HEADERDATA, (void*)&responseHeaders);
1813+
//curl_easy_setopt(hCurl, CURLOPT_HEADERFUNCTION, HeaderCallback);
18101814
CURLcode curlCode = curl_easy_perform(hCurl);
18111815

18121816
// Check result
@@ -1824,7 +1828,7 @@ int S3fsCurl::RequestPerform(void)
18241828
if(500 <= LastResponseCode){
18251829
S3FS_PRN_INFO3("HTTP response code %ld", LastResponseCode);
18261830
sleep(4);
1827-
break;
1831+
break;
18281832
}
18291833

18301834
// Service response codes which are >= 400 && < 500
@@ -1854,38 +1858,38 @@ int S3fsCurl::RequestPerform(void)
18541858
case CURLE_WRITE_ERROR:
18551859
S3FS_PRN_ERR("### CURLE_WRITE_ERROR");
18561860
sleep(2);
1857-
break;
1861+
break;
18581862

18591863
case CURLE_OPERATION_TIMEDOUT:
18601864
S3FS_PRN_ERR("### CURLE_OPERATION_TIMEDOUT");
18611865
sleep(2);
1862-
break;
1866+
break;
18631867

18641868
case CURLE_COULDNT_RESOLVE_HOST:
18651869
S3FS_PRN_ERR("### CURLE_COULDNT_RESOLVE_HOST");
18661870
sleep(2);
1867-
break;
1871+
break;
18681872

18691873
case CURLE_COULDNT_CONNECT:
18701874
S3FS_PRN_ERR("### CURLE_COULDNT_CONNECT");
18711875
sleep(4);
1872-
break;
1876+
break;
18731877

18741878
case CURLE_GOT_NOTHING:
18751879
S3FS_PRN_ERR("### CURLE_GOT_NOTHING");
18761880
sleep(4);
1877-
break;
1881+
break;
18781882

18791883
case CURLE_ABORTED_BY_CALLBACK:
18801884
S3FS_PRN_ERR("### CURLE_ABORTED_BY_CALLBACK");
18811885
sleep(4);
18821886
S3fsCurl::curl_times[hCurl] = time(0);
1883-
break;
1887+
break;
18841888

18851889
case CURLE_PARTIAL_FILE:
18861890
S3FS_PRN_ERR("### CURLE_PARTIAL_FILE");
18871891
sleep(4);
1888-
break;
1892+
break;
18891893

18901894
case CURLE_SEND_ERROR:
18911895
S3FS_PRN_ERR("### CURLE_SEND_ERROR");
@@ -1945,7 +1949,7 @@ int S3fsCurl::RequestPerform(void)
19451949
}
19461950
S3FS_PRN_INFO3("HTTP response code =%ld", LastResponseCode);
19471951

1948-
// Let's try to retrieve the
1952+
// Let's try to retrieve the
19491953
if(404 == LastResponseCode){
19501954
return -ENOENT;
19511955
}
@@ -1983,7 +1987,7 @@ int S3fsCurl::RequestPerform(void)
19831987
string S3fsCurl::CalcSignature(string method, string strMD5, string content_type, string date, string resource)
19841988
{
19851989
string Signature;
1986-
1990+
19871991
if (0 < S3fsCurl::CAM_role.size()) {
19881992
if (!S3fsCurl::checkSTSCredentialUpdate()) {
19891993
S3FS_PRN_ERR("Something error occurred in checking CAM STS Credential");
@@ -2015,7 +2019,7 @@ string S3fsCurl::CalcSignature(string method, string strMD5, string content_type
20152019
FormatString += get_canonical_headers(requestHeaders); // \n has been append
20162020

20172021
S3FS_PRN_INFO("Format string is : %s", FormatString.c_str());
2018-
2022+
20192023
const unsigned char* sdata = reinterpret_cast<const unsigned char*>(FormatString.data());
20202024
int sdata_len = FormatString.size();
20212025
unsigned char* md = NULL;
@@ -2330,7 +2334,7 @@ int S3fsCurl::PutHeadRequest(const char* tpath, headers_t& meta, bool is_copy)
23302334
} else if(STANDARD_IA == GetStorageClass()){
23312335
requestHeaders = curl_slist_sort_insert(requestHeaders, "x-cos-storage-class", "STANDARD_IA");
23322336
}
2333-
2337+
23342338
string date = get_date_rfc850();
23352339
requestHeaders = curl_slist_sort_insert(requestHeaders, "Date", date.c_str());
23362340

@@ -2753,7 +2757,7 @@ int S3fsCurl::CompleteMultipartPostRequest(const char* tpath, string& upload_id,
27532757
postContent += " <PartNumber>" + str(cnt + 1) + "</PartNumber>\n";
27542758
postContent += " <ETag>\"" + parts[cnt] + "\"</ETag>\n";
27552759
postContent += "</Part>\n";
2756-
}
2760+
}
27572761
postContent += "</CompleteMultipartUpload>\n";
27582762

27592763
// set postdata
@@ -2996,7 +3000,7 @@ int S3fsCurl::UploadMultipartPostRequest(const char* tpath, int part_num, string
29963000
// request
29973001
if(0 == (result = RequestPerform())){
29983002
// check etag
2999-
// cos's no check etag
3003+
// cos's no check etag
30003004
// if(NULL != strstr(headdata->str(), upper(partdata.etag).c_str())){
30013005
// get etag from response header
30023006
S3FS_PRN_ERR("headdata is : %s", headdata->str());
@@ -3302,12 +3306,12 @@ int S3fsCurl::MultipartRenameRequest(const char* from, const char* to, headers_t
33023306
}
33033307

33043308
//-------------------------------------------------------------------
3305-
// Class S3fsMultiCurl
3309+
// Class S3fsMultiCurl
33063310
//-------------------------------------------------------------------
33073311
#define MAX_MULTI_HEADREQ 20 // default: max request count in readdir curl_multi.
33083312

33093313
//-------------------------------------------------------------------
3310-
// Class method for S3fsMultiCurl
3314+
// Class method for S3fsMultiCurl
33113315
//-------------------------------------------------------------------
33123316
int S3fsMultiCurl::max_multireq = MAX_MULTI_HEADREQ;
33133317

@@ -3319,7 +3323,7 @@ int S3fsMultiCurl::SetMaxMultiRequest(int max)
33193323
}
33203324

33213325
//-------------------------------------------------------------------
3322-
// method for S3fsMultiCurl
3326+
// method for S3fsMultiCurl
33233327
//-------------------------------------------------------------------
33243328
S3fsMultiCurl::S3fsMultiCurl() : hMulti(NULL), SuccessCallback(NULL), RetryCallback(NULL)
33253329
{
@@ -3368,14 +3372,14 @@ S3fsMultiSuccessCallback S3fsMultiCurl::SetSuccessCallback(S3fsMultiSuccessCallb
33683372
SuccessCallback = function;
33693373
return old;
33703374
}
3371-
3375+
33723376
S3fsMultiRetryCallback S3fsMultiCurl::SetRetryCallback(S3fsMultiRetryCallback function)
33733377
{
33743378
S3fsMultiRetryCallback old = RetryCallback;
33753379
RetryCallback = function;
33763380
return old;
33773381
}
3378-
3382+
33793383
bool S3fsMultiCurl::SetS3fsCurlObject(S3fsCurl* s3fscurl)
33803384
{
33813385
if(hMulti){

0 commit comments

Comments
 (0)