jobcore/curl/0002-cfilters_Curl_conn_get...

35 lines
1.0 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);
}