Skip to content

Commit c5e0568

Browse files
authored
Update curl.cpp
j兼容COS的ETag修改
1 parent 618c7bf commit c5e0568

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/curl.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,7 +1097,12 @@ bool S3fsCurl::UploadMultipartPostCallback(S3fsCurl* s3fscurl)
10971097
string header_str(s3fscurl->headdata->str(), s3fscurl->headdata->size());
10981098
int pos = header_str.find("ETag: \"");
10991099
if (pos != std::string::npos) {
1100-
s3fscurl->partdata.etag = header_str.substr(pos + 7, 32); // 获取32位的MD5 ETag值
1100+
if (header_str.at(pos+39) != '"') {
1101+
// sha1
1102+
s3fscurl->partdata.etag = header_str.substr(pos + 7, 40);
1103+
} else {
1104+
s3fscurl->partdata.etag = header_str.substr(pos + 7, 32); // ETag get md5 value
1105+
}
11011106
S3FS_PRN_ERR("partdata.etag : %s", s3fscurl->partdata.etag.c_str());
11021107
}
11031108
s3fscurl->partdata.etaglist->at(s3fscurl->partdata.etagpos).assign(s3fscurl->partdata.etag);
@@ -2964,7 +2969,12 @@ int S3fsCurl::UploadMultipartPostRequest(const char* tpath, int part_num, string
29642969
string header_str(headdata->str(), headdata->size());
29652970
int pos = header_str.find("ETag: \"");
29662971
if (pos != std::string::npos) {
2967-
partdata.etag = header_str.substr(pos + 7, 40);
2972+
if (header_str.at(pos+39) != '"') {
2973+
// sha1
2974+
partdata.etag = header_str.substr(pos + 7, 40);
2975+
} else {
2976+
partdata.etag = header_str.substr(pos + 7, 32); // ETag get md5 value
2977+
}
29682978
S3FS_PRN_ERR("partdata.etag : %s", partdata.etag.c_str());
29692979
}
29702980
partdata.uploaded = true;

0 commit comments

Comments
 (0)