aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorabdullinsaid <abdullinsaid@yandex-team.com>2024-02-20 16:19:25 +0300
committerabdullinsaid <abdullinsaid@yandex-team.com>2024-02-20 16:42:29 +0300
commit676a0db906b78ae61a520261bb26509ee298c6cd (patch)
tree6a59f703f29808d8ab2bb9ab707c7106ba479541
parent50fd9b1d00fbeca74f474ae63311acf816b6f57d (diff)
downloadydb-676a0db906b78ae61a520261bb26509ee298c6cd.tar.gz
Curl lib fix from https://github.com/curl/curl/pull/12633
fix from https://github.com/curl/curl/pull/12633 b2ce73393b13c80b0875dfe61a9cabce0bd2c679
-rw-r--r--contrib/libs/curl/lib/cf-socket.c2
-rw-r--r--contrib/libs/curl/lib/http2.c4
-rw-r--r--contrib/libs/curl/lib/vquic/curl_ngtcp2.c7
-rw-r--r--contrib/libs/curl/lib/vquic/curl_quiche.c2
4 files changed, 8 insertions, 7 deletions
diff --git a/contrib/libs/curl/lib/cf-socket.c b/contrib/libs/curl/lib/cf-socket.c
index e42b4a87b1..d86dfd7b72 100644
--- a/contrib/libs/curl/lib/cf-socket.c
+++ b/contrib/libs/curl/lib/cf-socket.c
@@ -1244,7 +1244,7 @@ static void cf_socket_adjust_pollset(struct Curl_cfilter *cf,
if(ctx->sock != CURL_SOCKET_BAD) {
if(!cf->connected)
Curl_pollset_set_out_only(data, ps, ctx->sock);
- else
+ else if(CURL_WANT_RECV(data))
Curl_pollset_add_in(data, ps, ctx->sock);
CURL_TRC_CF(data, cf, "adjust_pollset -> %d socks", ps->num);
}
diff --git a/contrib/libs/curl/lib/http2.c b/contrib/libs/curl/lib/http2.c
index fd37d3c8b2..f202b81d0c 100644
--- a/contrib/libs/curl/lib/http2.c
+++ b/contrib/libs/curl/lib/http2.c
@@ -2341,8 +2341,8 @@ static void cf_h2_adjust_pollset(struct Curl_cfilter *cf,
bool c_exhaust, s_exhaust;
CF_DATA_SAVE(save, cf, data);
- c_exhaust = !nghttp2_session_get_remote_window_size(ctx->h2);
- s_exhaust = stream && stream->id >= 0 &&
+ c_exhaust = want_send && !nghttp2_session_get_remote_window_size(ctx->h2);
+ s_exhaust = want_send && stream && stream->id >= 0 &&
!nghttp2_session_get_stream_remote_window_size(ctx->h2,
stream->id);
want_recv = (want_recv || c_exhaust || s_exhaust);
diff --git a/contrib/libs/curl/lib/vquic/curl_ngtcp2.c b/contrib/libs/curl/lib/vquic/curl_ngtcp2.c
index 4a3ea0b516..416c8fb3ec 100644
--- a/contrib/libs/curl/lib/vquic/curl_ngtcp2.c
+++ b/contrib/libs/curl/lib/vquic/curl_ngtcp2.c
@@ -1166,9 +1166,10 @@ static void cf_ngtcp2_adjust_pollset(struct Curl_cfilter *cf,
bool c_exhaust, s_exhaust;
CF_DATA_SAVE(save, cf, data);
- c_exhaust = !ngtcp2_conn_get_cwnd_left(ctx->qconn) ||
- !ngtcp2_conn_get_max_data_left(ctx->qconn);
- s_exhaust = stream && stream->id >= 0 && stream->quic_flow_blocked;
+ c_exhaust = want_send && (!ngtcp2_conn_get_cwnd_left(ctx->qconn) ||
+ !ngtcp2_conn_get_max_data_left(ctx->qconn));
+ s_exhaust = want_send && stream && stream->id >= 0 &&
+ stream->quic_flow_blocked;
want_recv = (want_recv || c_exhaust || s_exhaust);
want_send = (!s_exhaust && want_send) ||
!Curl_bufq_is_empty(&ctx->q.sendbuf);
diff --git a/contrib/libs/curl/lib/vquic/curl_quiche.c b/contrib/libs/curl/lib/vquic/curl_quiche.c
index 1fc6e5a86b..0f60378776 100644
--- a/contrib/libs/curl/lib/vquic/curl_quiche.c
+++ b/contrib/libs/curl/lib/vquic/curl_quiche.c
@@ -1176,7 +1176,7 @@ static void cf_quiche_adjust_pollset(struct Curl_cfilter *cf,
c_exhaust = FALSE; /* Have not found any call in quiche that tells
us if the connection itself is blocked */
- s_exhaust = stream && stream->id >= 0 &&
+ s_exhaust = want_send && stream && stream->id >= 0 &&
(stream->quic_flow_blocked || !stream_is_writeable(cf, data));
want_recv = (want_recv || c_exhaust || s_exhaust);
want_send = (!s_exhaust && want_send) ||