diff options
author | abdullinsaid <abdullinsaid@yandex-team.com> | 2024-02-20 16:19:25 +0300 |
---|---|---|
committer | abdullinsaid <abdullinsaid@yandex-team.com> | 2024-02-20 16:42:29 +0300 |
commit | 676a0db906b78ae61a520261bb26509ee298c6cd (patch) | |
tree | 6a59f703f29808d8ab2bb9ab707c7106ba479541 | |
parent | 50fd9b1d00fbeca74f474ae63311acf816b6f57d (diff) | |
download | ydb-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.c | 2 | ||||
-rw-r--r-- | contrib/libs/curl/lib/http2.c | 4 | ||||
-rw-r--r-- | contrib/libs/curl/lib/vquic/curl_ngtcp2.c | 7 | ||||
-rw-r--r-- | contrib/libs/curl/lib/vquic/curl_quiche.c | 2 |
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) || |