diff -ruN --strip-trailing-cr BitcasaDLL-20140102/BitcasaDLL/BitcasaAPI.cpp BitcasaDLL-20140103/BitcasaDLL/BitcasaAPI.cpp
--- BitcasaDLL-20140102/BitcasaDLL/BitcasaAPI.cpp	2014-01-02 13:08:14.000000000 +0900
+++ BitcasaDLL-20140103/BitcasaDLL/BitcasaAPI.cpp	2014-01-03 16:04:58.000000000 +0900
@@ -493,7 +493,10 @@
 		bitcasa.Clear();
 		bitcasa.request.query["access_token"] = WideChartoUTF8(access_token);
 		bitcasa.AddHeader("Range", dynamic_cast<std::stringstream &>(std::stringstream() << "bytes=" << offset << "-" << (offset + transbytes - 1)).str());
-		bitcasa.GET(URI);
+		if (bitcasa.GET(URI) != 0){
+			if (--retrycount > 0)
+				continue;
+		}
 
 		std::wcerr << ".";
 		if (bitcasa.response.code == 503){
diff -ruN --strip-trailing-cr BitcasaDLL-20140102/BitcasaDLL/http_client.cpp BitcasaDLL-20140103/BitcasaDLL/http_client.cpp
--- BitcasaDLL-20140102/BitcasaDLL/http_client.cpp	2013-12-31 19:20:28.000000000 +0900
+++ BitcasaDLL-20140103/BitcasaDLL/http_client.cpp	2014-01-03 16:04:40.000000000 +0900
@@ -166,10 +166,10 @@
 		size_t len = 0;
 		if (tempread) {
 			buffer.resize(4096);
+			response.body.resize(0);
 			while ((ContentLength < 0) || (len >= ContentLength)){
 				int p = BIO_read(bio, &buffer[0], (int)buffer.size());
 				if (p <= 0){
-					response.body.resize(0);
 					break;
 				}
 				response.body.resize(len + p);
@@ -182,6 +182,10 @@
 			if (p <= 0) {
 				response.body.resize(0);
 			}
+			else {
+				if (p < response.body.size())
+					response.body.resize(p);
+			}
 		}
 		return 0;
 	}
@@ -317,6 +321,7 @@
 	size_t len = 0;
 	if (tempread) {
 		buffer.resize(4096);
+		response.body.resize(0);
 		while ((ContentLength < 0) || (len >= ContentLength)){
 			int p = BIO_read(bio, &buffer[0], (int)buffer.size());
 			if (p <= 0) break;
@@ -328,7 +333,11 @@
 	else {
 		int p = BIO_read(bio, &response.body[0], (int)response.body.size());
 		if (p <= 0) {
-			response.body[0] = 0;
+			response.body.resize(0);
+		}
+		else {
+			if (p < response.body.size())
+				response.body.resize(p);
 		}
 	}
 	return 0;
@@ -354,16 +363,14 @@
 	}
 	request.line = "GET " + URI + " HTTP/1.1\r\n";
 	request.URI = URI;
-	send();
-	return 0;
+	return send();
 }
 
 int HttpsClient::POST(std::string URI)
 {
 	request.line = "POST " + URI + " HTTP/1.1\r\n";
 	request.URI = URI;
-	send();
-	return 0;
+	return send();
 }
 
 int HttpsClient::POST(std::string URI, std::map<std::string, std::string> formdata)
@@ -377,8 +384,7 @@
 	memcpy(&request.body[0], body.c_str(), body.length());
 	AddHeader("Content-Type","application/x-www-form-urlencoded");
 
-	send();
-	return 0;
+	return send();
 }
 
 int HttpsClient::POSTfile(std::string URI, std::map<std::string, std::string> formdata, std::wstring filename, void(*callback)(INT64))
@@ -391,8 +397,7 @@
 	std::ifstream infile(filename, std::ios::in | std::ios::binary);
 	if (!infile) return 1;
 	auto ppos = filename.find_last_of(L"\\");
-	sendfile(infile, WideChartoUTF8((ppos == std::string::npos) ? filename : filename.substr(ppos + 1)), callback);
-	return 0;
+	return sendfile(infile, WideChartoUTF8((ppos == std::string::npos) ? filename : filename.substr(ppos + 1)), callback);
 }
 
 
@@ -400,8 +405,7 @@
 {
 	request.line = "DELETE " + URI + " HTTP/1.1\r\n";
 	request.URI = URI;
-	send();
-	return 0;
+	return send();
 }
 
 int HttpsClient::_DELETE(std::string URI, std::map<std::string, std::string> formdata)
@@ -415,8 +419,7 @@
 	memcpy(&request.body[0], body.c_str(), body.length());
 	AddHeader("Content-Type", "application/x-www-form-urlencoded");
 
-	send();
-	return 0;
+	return send();
 }
 
 int HttpsClient::AddHeader(std::string key, std::string value)
diff -ruN --strip-trailing-cr BitcasaDLL-20140102/bitcasaViewer/FileInfo.cs BitcasaDLL-20140103/bitcasaViewer/FileInfo.cs
--- BitcasaDLL-20140102/bitcasaViewer/FileInfo.cs	2014-01-02 21:09:58.000000000 +0900
+++ BitcasaDLL-20140103/bitcasaViewer/FileInfo.cs	2014-01-03 06:37:52.000000000 +0900
@@ -70,6 +70,8 @@
         public string category;
         public string name;
         public double mtime;
+        public double ctime;
+        public double birth_time;
         public string path;
         public int type;
         //folder
@@ -153,6 +155,10 @@
                 newItem.name = entry.GetString();
                 entry = Item["mtime"];
                 newItem.mtime = entry.GetDouble();
+                entry = Item["ctime"];
+                newItem.ctime = entry.GetDouble();
+                entry = Item["birth_time"];
+                newItem.birth_time = entry.GetDouble();
                 entry = Item["path"];
                 newItem.path = entry.GetString();
                 entry = Item["type"];
diff -ruN --strip-trailing-cr BitcasaDLL-20140102/bitcasaViewer/Form1.cs BitcasaDLL-20140103/bitcasaViewer/Form1.cs
--- BitcasaDLL-20140102/bitcasaViewer/Form1.cs	2014-01-02 12:48:24.000000000 +0900
+++ BitcasaDLL-20140103/bitcasaViewer/Form1.cs	2014-01-03 06:37:52.000000000 +0900
@@ -66,8 +66,12 @@
             listBox1.Items.Add("category : " + item.category);
             listBox1.Items.Add("name : " + item.name);
             listBox1.Items.Add("path : " + item.path);
+            listBox1.Items.Add("ctime : " + item.ctime.ToString());
+            listBox1.Items.Add("        " + BitcasaFileInfo.mtimeToString(item.ctime));
             listBox1.Items.Add("mtime : " + item.mtime.ToString());
             listBox1.Items.Add("        " + BitcasaFileInfo.mtimeToString(item.mtime));
+            listBox1.Items.Add("birth_time : " + item.birth_time.ToString());
+            listBox1.Items.Add("        " + BitcasaFileInfo.mtimeToString(item.birth_time));
             listBox1.Items.Add("type  : " + item.type.ToString());
             if (item.category == "folders")
             {
