Ver Fonte

[Net] Fix HTTPRquest store_buffer error.

HTTPRquest no longer call store_buffer/append_array when the chunk size
is 0.

(cherry picked from commit 507a9beca1bf70f60d0cf1e2095ae81e5200dbe1)
Fabio Alessandrelli há 4 anos atrás
pai
commit
b6a5f8422a
1 ficheiros alterados com 11 adições e 9 exclusões
  1. 11 9
      scene/main/http_request.cpp

+ 11 - 9
scene/main/http_request.cpp

@@ -322,17 +322,19 @@ bool HTTPRequest::_update_connection() {
 			}
 			}
 
 
 			PoolByteArray chunk = client->read_response_body_chunk();
 			PoolByteArray chunk = client->read_response_body_chunk();
-			downloaded.add(chunk.size());
 
 
-			if (file) {
-				PoolByteArray::Read r = chunk.read();
-				file->store_buffer(r.ptr(), chunk.size());
-				if (file->get_error() != OK) {
-					call_deferred("_request_done", RESULT_DOWNLOAD_FILE_WRITE_ERROR, response_code, response_headers, PoolByteArray());
-					return true;
+			if (chunk.size()) {
+				downloaded.add(chunk.size());
+				if (file) {
+					PoolByteArray::Read r = chunk.read();
+					file->store_buffer(r.ptr(), chunk.size());
+					if (file->get_error() != OK) {
+						call_deferred("_request_done", RESULT_DOWNLOAD_FILE_WRITE_ERROR, response_code, response_headers, PoolByteArray());
+						return true;
+					}
+				} else {
+					body.append_array(chunk);
 				}
 				}
-			} else {
-				body.append_array(chunk);
 			}
 			}
 
 
 			if (body_size_limit >= 0 && downloaded.get() > body_size_limit) {
 			if (body_size_limit >= 0 && downloaded.get() > body_size_limit) {