summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde <remi@verschelde.fr>2021-05-31 16:48:56 +0200
committerGitHub <noreply@github.com>2021-05-31 16:48:56 +0200
commitff648e2504c48d3e98d84a3dd81d6d1101c3e05f (patch)
tree1a61a2568eea0bcb45feca367d29facee5172702
parentafe1d1672f309c9e04984bf8faee489851fa26e4 (diff)
parent507a9beca1bf70f60d0cf1e2095ae81e5200dbe1 (diff)
Merge pull request #49226 from Faless/net/4.x_empty_chunk_fix
[Net] Fix HTTPRquest store_buffer error.
-rw-r--r--scene/main/http_request.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/scene/main/http_request.cpp b/scene/main/http_request.cpp
index 884696d58d..927b114fbc 100644
--- a/scene/main/http_request.cpp
+++ b/scene/main/http_request.cpp
@@ -375,17 +375,19 @@ bool HTTPRequest::_update_connection() {
}
PackedByteArray chunk = client->read_response_body_chunk();
- downloaded.add(chunk.size());
- if (file) {
- const uint8_t *r = chunk.ptr();
- file->store_buffer(r, chunk.size());
- if (file->get_error() != OK) {
- call_deferred("_request_done", RESULT_DOWNLOAD_FILE_WRITE_ERROR, response_code, response_headers, PackedByteArray());
- return true;
+ if (chunk.size()) {
+ downloaded.add(chunk.size());
+ if (file) {
+ const uint8_t *r = chunk.ptr();
+ file->store_buffer(r, chunk.size());
+ if (file->get_error() != OK) {
+ call_deferred("_request_done", RESULT_DOWNLOAD_FILE_WRITE_ERROR, response_code, response_headers, PackedByteArray());
+ return true;
+ }
+ } else {
+ body.append_array(chunk);
}
- } else {
- body.append_array(chunk);
}
if (body_size_limit >= 0 && downloaded.get() > body_size_limit) {