60 lines
1.8 KiB
Diff
60 lines
1.8 KiB
Diff
From 81b2b577df40262716ff0e1c0e1cebabb99f012d Mon Sep 17 00:00:00 2001
|
|
From: Daniel Stenberg <daniel@haxx.se>
|
|
Date: Sat, 15 Apr 2023 21:11:36 +0200
|
|
Subject: [PATCH] multi: free up more data earleier in DONE
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Before checking for more users of the connection and possibly bailing
|
|
out.
|
|
|
|
Fixes #10971
|
|
Reported-by: Paweł Wegner
|
|
Closes #10972
|
|
|
|
Conflict: context adapt
|
|
Reference: https://github.com/curl/curl/commit/81b2b577df40262716ff0e1c0e1cebabb99f012d
|
|
---
|
|
lib/multi.c | 17 +++++++++--------
|
|
1 file changed, 9 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/lib/multi.c b/lib/multi.c
|
|
index b2b1d65a3..0be8d0c40 100644
|
|
--- a/lib/multi.c
|
|
+++ b/lib/multi.c
|
|
@@ -699,6 +699,15 @@ static CURLcode multi_done(struct Curl_easy *data,
|
|
|
|
process_pending_handles(data->multi); /* connection / multiplex */
|
|
|
|
+ Curl_safefree(data->state.ulbuf);
|
|
+
|
|
+ /* if the transfer was completed in a paused state there can be buffered
|
|
+ data left to free */
|
|
+ for(i = 0; i < data->state.tempcount; i++) {
|
|
+ Curl_dyn_free(&data->state.tempwrite[i].b);
|
|
+ }
|
|
+ data->state.tempcount = 0;
|
|
+
|
|
CONNCACHE_LOCK(data);
|
|
Curl_detach_connnection(data);
|
|
if(CONN_INUSE(conn)) {
|
|
@@ -717,14 +726,6 @@ static CURLcode multi_done(struct Curl_easy *data,
|
|
conn->dns_entry = NULL;
|
|
}
|
|
Curl_hostcache_prune(data);
|
|
- Curl_safefree(data->state.ulbuf);
|
|
-
|
|
- /* if the transfer was completed in a paused state there can be buffered
|
|
- data left to free */
|
|
- for(i = 0; i < data->state.tempcount; i++) {
|
|
- Curl_dyn_free(&data->state.tempwrite[i].b);
|
|
- }
|
|
- data->state.tempcount = 0;
|
|
|
|
/* if data->set.reuse_forbid is TRUE, it means the libcurl client has
|
|
forced us to close this connection. This is ignored for requests taking
|
|
--
|
|
2.33.0
|
|
|