Skip to content

Commit fc09d78

Browse files
authored
Merge pull request #57122 from Faless/net/4.x_http_request_leak
2 parents 61b7962 + 17d4d38 commit fc09d78

File tree

1 file changed

+5
-10
lines changed

1 file changed

+5
-10
lines changed

scene/main/http_request.cpp

+5-10
Original file line numberDiff line numberDiff line change
@@ -442,30 +442,25 @@ void HTTPRequest::_request_done(int p_status, int p_code, const PackedStringArra
442442
is_compressed = false;
443443
}
444444

445-
const PackedByteArray *data = nullptr;
446-
447445
if (accept_gzip && is_compressed && p_data.size() > 0) {
448446
// Decompress request body
449-
PackedByteArray *decompressed = memnew(PackedByteArray);
450-
int result = Compression::decompress_dynamic(decompressed, body_size_limit, p_data.ptr(), p_data.size(), mode);
447+
PackedByteArray decompressed;
448+
int result = Compression::decompress_dynamic(&decompressed, body_size_limit, p_data.ptr(), p_data.size(), mode);
451449
if (result == OK) {
452-
data = decompressed;
450+
emit_signal(SNAME("request_completed"), p_status, p_code, p_headers, decompressed);
451+
return;
453452
} else if (result == -5) {
454453
WARN_PRINT("Decompressed size of HTTP response body exceeded body_size_limit");
455454
p_status = RESULT_BODY_SIZE_LIMIT_EXCEEDED;
456455
// Just return the raw data if we failed to decompress it
457-
data = &p_data;
458456
} else {
459457
WARN_PRINT("Failed to decompress HTTP response body");
460458
p_status = RESULT_BODY_DECOMPRESS_FAILED;
461459
// Just return the raw data if we failed to decompress it
462-
data = &p_data;
463460
}
464-
} else {
465-
data = &p_data;
466461
}
467462

468-
emit_signal(SNAME("request_completed"), p_status, p_code, p_headers, *data);
463+
emit_signal(SNAME("request_completed"), p_status, p_code, p_headers, p_data);
469464
}
470465

471466
void HTTPRequest::_notification(int p_what) {

0 commit comments

Comments
 (0)