Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package curl for openSUSE:Factory checked in 
at 2024-01-09 20:48:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/curl (Old)
 and      /work/SRC/openSUSE:Factory/.curl.new.21961 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "curl"

Tue Jan  9 20:48:37 2024 rev:192 rq:1137519 version:8.5.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/curl/curl.changes        2023-12-15 
21:46:01.823411221 +0100
+++ /work/SRC/openSUSE:Factory/.curl.new.21961/curl.changes     2024-01-09 
20:48:49.750422236 +0100
@@ -1,0 +2,6 @@
+Fri Jan  5 17:54:08 UTC 2024 - Michael Pujos <[email protected]>
+
+- Added curl-adjust-pollset-fix.patch to fix broken MPD http streaming:
+  https://github.com/curl/curl/issues/12632
+
+-------------------------------------------------------------------

New:
----
  curl-adjust-pollset-fix.patch

BETA DEBUG BEGIN:
  New:
- Added curl-adjust-pollset-fix.patch to fix broken MPD http streaming:
  https://github.com/curl/curl/issues/12632
BETA DEBUG END:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ curl.spec ++++++
--- /var/tmp/diff_new_pack.2mTHC7/_old  2024-01-09 20:48:50.690456413 +0100
+++ /var/tmp/diff_new_pack.2mTHC7/_new  2024-01-09 20:48:50.690456413 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package curl
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -37,6 +37,8 @@
 Patch3:         curl-disabled-redirect-protocol-message.patch
 #PATCH-FIX-UPSTREAM dist: add tests/errorcodes.pl to the tarball
 Patch4:         curl-tests-errorcodes.patch
+# fix MPD http streaming: https://github.com/curl/curl/issues/12632
+Patch5:         curl-adjust-pollset-fix.patch
 BuildRequires:  libtool
 BuildRequires:  pkgconfig
 Requires:       libcurl4 = %{version}


++++++ curl-adjust-pollset-fix.patch ++++++
>From 3a24ef09af5fe7fdd672dee72ff760f871105a03 Mon Sep 17 00:00:00 2001
From: Stefan Eissing <[email protected]>
Date: Thu, 4 Jan 2024 10:06:17 +0100
Subject: [PATCH] adjust_pollset fix

- do not add a socket for POLLIN when the transfer does not
  want to send (for example is paused).
- refs #12632
---
 lib/cf-socket.c         | 2 +-
 lib/http2.c             | 4 ++--
 lib/vquic/curl_ngtcp2.c | 7 ++++---
 lib/vquic/curl_quiche.c | 2 +-
 4 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/lib/cf-socket.c b/lib/cf-socket.c
index bd4f0d1e97e2d3..c86aa7e7c2a969 100644
--- a/lib/cf-socket.c
+++ b/lib/cf-socket.c
@@ -1243,7 +1243,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/lib/http2.c b/lib/http2.c
index dcc24ea102302c..b7a08607945357 100644
--- a/lib/http2.c
+++ b/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/lib/vquic/curl_ngtcp2.c b/lib/vquic/curl_ngtcp2.c
index f4edf2d636ef93..89f690462d640b 100644
--- a/lib/vquic/curl_ngtcp2.c
+++ b/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/lib/vquic/curl_quiche.c b/lib/vquic/curl_quiche.c
index 33c2621dc8bf63..9c4df2df0f6955 100644
--- a/lib/vquic/curl_quiche.c
+++ b/lib/vquic/curl_quiche.c
@@ -1189,7 +1189,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) ||

Reply via email to