34 lines
1 KiB
Diff
34 lines
1 KiB
Diff
From 728400f875e845f72ee5602edb905f6301ade3e7 Mon Sep 17 00:00:00 2001
|
|
From: Daniel Stenberg <daniel@haxx.se>
|
|
Date: Mon, 26 Dec 2022 09:59:20 +0100
|
|
Subject: cfilters:Curl_conn_get_select_socks: use the first non-connected
|
|
filter
|
|
|
|
When there are filters addded for both socket and SSL, the code
|
|
previously checked the SSL sockets during connect when it *should* first
|
|
check the socket layer until that has connected.
|
|
|
|
Fixes #10157
|
|
Fixes #10146
|
|
Closes #10160
|
|
|
|
Reviewed-by: Stefan Eissing
|
|
---
|
|
lib/cfilters.c | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/lib/cfilters.c b/lib/cfilters.c
|
|
index 8951533418..8b05fbc8f4 100644
|
|
--- a/lib/cfilters.c
|
|
+++ b/lib/cfilters.c
|
|
@@ -437,6 +437,10 @@ int Curl_conn_get_select_socks(struct Curl_easy *data, int sockindex,
|
|
DEBUGASSERT(data);
|
|
DEBUGASSERT(data->conn);
|
|
cf = data->conn->cfilter[sockindex];
|
|
+
|
|
+ /* if the next one is not yet connected, that's the one we want */
|
|
+ while(cf && cf->next && !cf->next->connected)
|
|
+ cf = cf->next;
|
|
if(cf) {
|
|
return cf->cft->get_select_socks(cf, data, socks);
|
|
}
|