Changed codes

1) don't use curl_slist directly
    s3fs has auto_curl_slist struct, but some function use curl_slist directly in s3fs.cpp.
    So that, changes codes for using auto_curl_slist.



git-svn-id: http://s3fs.googlecode.com/svn/trunk@444 df820570-a93a-0410-bd06-b72b767a4274
This commit is contained in:
ggtakec@gmail.com 2013-06-15 16:47:17 +00:00
parent f7e1a2a37f
commit b3fb37a87e

View File

@ -1204,7 +1204,7 @@ static string initiate_multipart_upload(const char *path, off_t size, headers_t
string ContentType; string ContentType;
string s3_realpath; string s3_realpath;
BodyData body; BodyData body;
struct curl_slist *slist=NULL; auto_curl_slist headers;
FGPRINT(" initiate_multipart_upload [path=%s][size=%lu]\n", path, size); FGPRINT(" initiate_multipart_upload [path=%s][size=%lu]\n", path, size);
@ -1224,20 +1224,20 @@ static string initiate_multipart_upload(const char *path, off_t size, headers_t
raw_date = get_date(); raw_date = get_date();
date.append(raw_date); date.append(raw_date);
slist = curl_slist_append(slist, date.c_str()); headers.append(date);
slist = curl_slist_append(slist, "Accept:"); headers.append("Accept:");
slist = curl_slist_append(slist, "Content-Length:"); headers.append("Content-Length:");
ContentType.assign("Content-Type: "); ContentType.assign("Content-Type: ");
string ctype_data; string ctype_data;
ctype_data.assign(lookupMimeType(path)); ctype_data.assign(lookupMimeType(path));
ContentType.append(ctype_data); ContentType.append(ctype_data);
slist = curl_slist_append(slist, ContentType.c_str()); headers.append(ContentType);
// x-amz headers: (a) alphabetical order and (b) no spaces after colon // x-amz headers: (a) alphabetical order and (b) no spaces after colon
acl.assign("x-amz-acl:"); acl.assign("x-amz-acl:");
acl.append(default_acl); acl.append(default_acl);
slist = curl_slist_append(slist, acl.c_str()); headers.append(acl.c_str());
for(headers_t::iterator iter = meta.begin(); iter != meta.end(); ++iter) { for(headers_t::iterator iter = meta.begin(); iter != meta.end(); ++iter) {
string key = (*iter).first; string key = (*iter).first;
@ -1250,29 +1250,28 @@ static string initiate_multipart_upload(const char *path, off_t size, headers_t
entry.assign(key); entry.assign(key);
entry.append(":"); entry.append(":");
entry.append(value); entry.append(value);
slist = curl_slist_append(slist, entry.c_str()); headers.append(entry);
} }
} }
if(use_rrs.substr(0,1) == "1"){ if(use_rrs.substr(0,1) == "1"){
slist = curl_slist_append(slist, "x-amz-storage-class:REDUCED_REDUNDANCY"); headers.append("x-amz-storage-class:REDUCED_REDUNDANCY");
} }
if(ow_sse_flg && use_sse.substr(0,1) == "1"){ if(ow_sse_flg && use_sse.substr(0,1) == "1"){
slist = curl_slist_append(slist, "x-amz-server-side-encryption:AES256"); headers.append("x-amz-server-side-encryption:AES256");
} }
if(public_bucket.substr(0,1) != "1") { if(public_bucket.substr(0,1) != "1") {
auth.assign("Authorization: AWS "); auth.assign("Authorization: AWS ");
auth.append(AWSAccessKeyId); auth.append(AWSAccessKeyId);
auth.append(":"); auth.append(":");
auth.append(calc_signature("POST", "", ctype_data, raw_date, slist, resource)); auth.append(calc_signature("POST", "", ctype_data, raw_date, headers.get(), resource));
slist = curl_slist_append(slist, auth.c_str()); headers.append(auth.c_str());
} }
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers.get());
curl_easy_setopt(curl, CURLOPT_URL, my_url.c_str()); curl_easy_setopt(curl, CURLOPT_URL, my_url.c_str());
result = my_curl_easy_perform(curl, &body); result = my_curl_easy_perform(curl, &body);
curl_slist_free_all(slist);
destroy_curl_handle(curl); destroy_curl_handle(curl);
if(result != 0) { if(result != 0) {
@ -1326,7 +1325,7 @@ static int complete_multipart_upload(const char *path, string upload_id,
string s3_realpath; string s3_realpath;
BodyData body; BodyData body;
struct WriteThis pooh; struct WriteThis pooh;
struct curl_slist *slist = NULL; auto_curl_slist headers;
FGPRINT(" complete_multipart_upload [path=%s]\n", path); FGPRINT(" complete_multipart_upload [path=%s]\n", path);
@ -1375,25 +1374,22 @@ static int complete_multipart_upload(const char *path, string upload_id,
date.assign("Date: "); date.assign("Date: ");
raw_date = get_date(); raw_date = get_date();
date.append(raw_date); date.append(raw_date);
slist = NULL; headers.append(date);
slist = curl_slist_append(slist, date.c_str()); headers.append("Accept:");
headers.append("Content-Type:");
slist = curl_slist_append(slist, "Accept:");
slist = curl_slist_append(slist, "Content-Type:");
if(public_bucket.substr(0,1) != "1") { if(public_bucket.substr(0,1) != "1") {
auth.assign("Authorization: AWS "); auth.assign("Authorization: AWS ");
auth.append(AWSAccessKeyId); auth.append(AWSAccessKeyId);
auth.append(":"); auth.append(":");
auth.append(calc_signature("POST", "", "", raw_date, slist, resource)); auth.append(calc_signature("POST", "", "", raw_date, headers.get(), resource));
slist = curl_slist_append(slist, auth.c_str()); headers.append(auth);
} }
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers.get());
curl_easy_setopt(curl, CURLOPT_URL, my_url.c_str()); curl_easy_setopt(curl, CURLOPT_URL, my_url.c_str());
result = my_curl_easy_perform(curl, &body); result = my_curl_easy_perform(curl, &body);
curl_slist_free_all(slist);
destroy_curl_handle(curl); destroy_curl_handle(curl);
free(pData); free(pData);
@ -1417,7 +1413,7 @@ static string upload_part(const char *path, const char *source, int part_number,
struct stat st; struct stat st;
BodyData body; BodyData body;
BodyData header; BodyData header;
struct curl_slist *slist = NULL; auto_curl_slist headers;
// Now upload the file as the nth part // Now upload the file as the nth part
FGPRINT(" multipart upload [path=%s][part=%d]\n", path, part_number); FGPRINT(" multipart upload [path=%s][part=%d]\n", path, part_number);
@ -1469,22 +1465,20 @@ static string upload_part(const char *path, const char *source, int part_number,
date.assign("Date: "); date.assign("Date: ");
raw_date = get_date(); raw_date = get_date();
date.append(raw_date); date.append(raw_date);
slist = NULL; headers.append(date);
slist = curl_slist_append(slist, date.c_str()); headers.append("Accept:");
slist = curl_slist_append(slist, "Accept:");
if(public_bucket.substr(0,1) != "1") { if(public_bucket.substr(0,1) != "1") {
auth.assign("Authorization: AWS "); auth.assign("Authorization: AWS ");
auth.append(AWSAccessKeyId); auth.append(AWSAccessKeyId);
auth.append(":"); auth.append(":");
auth.append(calc_signature("PUT", "", "", raw_date, slist, resource)); auth.append(calc_signature("PUT", "", "", raw_date, headers.get(), resource));
slist = curl_slist_append(slist, auth.c_str()); headers.append(auth);
} }
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers.get());
curl_easy_setopt(curl, CURLOPT_URL, my_url.c_str()); curl_easy_setopt(curl, CURLOPT_URL, my_url.c_str());
result = my_curl_easy_perform(curl, &body, &header, part_file); result = my_curl_easy_perform(curl, &body, &header, part_file);
curl_slist_free_all(slist);
destroy_curl_handle(curl); destroy_curl_handle(curl);
fclose(part_file); fclose(part_file);
@ -1602,7 +1596,7 @@ static int list_multipart_uploads(void) {
string raw_date; string raw_date;
string auth; string auth;
string my_url; string my_url;
struct curl_slist *slist=NULL; auto_curl_slist headers;
printf("List Multipart Uploads\n"); printf("List Multipart Uploads\n");
resource = urlEncode(service_path + bucket + "/"); resource = urlEncode(service_path + bucket + "/");
@ -1616,20 +1610,19 @@ static int list_multipart_uploads(void) {
date.assign("Date: "); date.assign("Date: ");
raw_date = get_date(); raw_date = get_date();
date.append(raw_date); date.append(raw_date);
slist = curl_slist_append(slist, date.c_str()); headers.append(date);
slist = curl_slist_append(slist, "Accept:"); headers.append("Accept:");
if(public_bucket.substr(0,1) != "1"){ if(public_bucket.substr(0,1) != "1"){
auth.assign("Authorization: AWS "); auth.assign("Authorization: AWS ");
auth.append(AWSAccessKeyId); auth.append(AWSAccessKeyId);
auth.append(":"); auth.append(":");
auth.append(calc_signature("GET", "", "", raw_date, slist, resource)); auth.append(calc_signature("GET", "", "", raw_date, headers.get(), resource));
slist = curl_slist_append(slist, auth.c_str()); headers.append(auth);
} }
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers.get());
curl_easy_setopt(curl, CURLOPT_URL, my_url.c_str()); curl_easy_setopt(curl, CURLOPT_URL, my_url.c_str());
result = my_curl_easy_perform(curl, &body); result = my_curl_easy_perform(curl, &body);
curl_slist_free_all(slist);
destroy_curl_handle(curl); destroy_curl_handle(curl);
if(result != 0) { if(result != 0) {