public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/proj/libressl:master commit in: net-misc/curl/files/
@ 2025-01-04 15:17 orbea
  0 siblings, 0 replies; only message in thread
From: orbea @ 2025-01-04 15:17 UTC (permalink / raw
  To: gentoo-commits

commit:     d72ff403a7d34b08c9e24c9b1801c23a3427fecf
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Sat Jan  4 14:56:40 2025 +0000
Commit:     orbea <orbea <AT> riseup <DOT> net>
CommitDate: Sat Jan  4 14:56:40 2025 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=d72ff403

net-misc/curl: drop old patches

Signed-off-by: orbea <orbea <AT> riseup.net>

 net-misc/curl/files/curl-8.7.1-chunked-post.patch  |  57 ----
 .../files/curl-8.7.1-fix-compress-option.patch     | 153 ---------
 .../curl/files/curl-8.7.1-http2-git-clone.patch    | 342 ---------------------
 net-misc/curl/files/curl-8.7.1-rustls-fixes.patch  |  49 ---
 net-misc/curl/files/curl-prefix.patch              |  21 --
 5 files changed, 622 deletions(-)

diff --git a/net-misc/curl/files/curl-8.7.1-chunked-post.patch b/net-misc/curl/files/curl-8.7.1-chunked-post.patch
deleted file mode 100644
index 9d1fef7..0000000
--- a/net-misc/curl/files/curl-8.7.1-chunked-post.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-https://github.com/curl/curl/commit/721941aadf4adf4f6aeb3f4c0ab489bb89610c36
-From: Stefan Eissing <stefan@eissing.org>
-Date: Mon, 1 Apr 2024 15:41:18 +0200
-Subject: [PATCH] http: with chunked POST forced, disable length check on read
- callback
-
-- when an application forces HTTP/1.1 chunked transfer encoding
-  by setting the corresponding header and instructs curl to use
-  the CURLOPT_READFUNCTION, disregard any POST length information.
-- this establishes backward compatibility with previous curl versions
-
-Applications are encouraged to not force "chunked", but rather
-set length information for a POST. By setting -1, curl will
-auto-select chunked on HTTP/1.1 and work properly on other HTTP
-versions.
-
-Reported-by: Jeff King
-Fixes #13229
-Closes #13257
---- a/lib/http.c
-+++ b/lib/http.c
-@@ -2046,8 +2046,19 @@ static CURLcode set_reader(struct Curl_easy *data, Curl_HttpReq httpreq)
-       else
-         result = Curl_creader_set_null(data);
-     }
--    else { /* we read the bytes from the callback */
--      result = Curl_creader_set_fread(data, postsize);
-+    else {
-+      /* we read the bytes from the callback. In case "chunked" encoding
-+       * is forced by the application, we disregard `postsize`. This is
-+       * a backward compatibility decision to earlier versions where
-+       * chunking disregarded this. See issue #13229. */
-+      bool chunked = FALSE;
-+      char *ptr = Curl_checkheaders(data, STRCONST("Transfer-Encoding"));
-+      if(ptr) {
-+        /* Some kind of TE is requested, check if 'chunked' is chosen */
-+        chunked = Curl_compareheader(ptr, STRCONST("Transfer-Encoding:"),
-+                                     STRCONST("chunked"));
-+      }
-+      result = Curl_creader_set_fread(data, chunked? -1 : postsize);
-     }
-     return result;
- 
-@@ -2115,6 +2126,13 @@ CURLcode Curl_http_req_set_reader(struct Curl_easy *data,
-     data->req.upload_chunky =
-       Curl_compareheader(ptr,
-                          STRCONST("Transfer-Encoding:"), STRCONST("chunked"));
-+    if(data->req.upload_chunky &&
-+       Curl_use_http_1_1plus(data, data->conn) &&
-+       (data->conn->httpversion >= 20)) {
-+       infof(data, "suppressing chunked transfer encoding on connection "
-+             "using HTTP version 2 or higher");
-+       data->req.upload_chunky = FALSE;
-+    }
-   }
-   else {
-     curl_off_t req_clen = Curl_creader_total_length(data);

diff --git a/net-misc/curl/files/curl-8.7.1-fix-compress-option.patch b/net-misc/curl/files/curl-8.7.1-fix-compress-option.patch
deleted file mode 100644
index a06a537..0000000
--- a/net-misc/curl/files/curl-8.7.1-fix-compress-option.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-https://github.com/curl/curl/commit/b30d694a027eb771c02a3db0dee0ca03ccab7377
-From: Stefan Eissing <stefan@eissing.org>
-Date: Thu, 28 Mar 2024 11:08:15 +0100
-Subject: [PATCH] content_encoding: brotli and others, pass through 0-length
- writes
-
-- curl's transfer handling may write 0-length chunks at the end of the
-  download with an EOS flag. (HTTP/2 does this commonly)
-
-- content encoders need to pass-through such a write and not count this
-  as error in case they are finished decoding
-
-Fixes #13209
-Fixes #13212
-Closes #13219
---- a/lib/content_encoding.c
-+++ b/lib/content_encoding.c
-@@ -300,7 +300,7 @@ static CURLcode deflate_do_write(struct Curl_easy *data,
-   struct zlib_writer *zp = (struct zlib_writer *) writer;
-   z_stream *z = &zp->z;     /* zlib state structure */
- 
--  if(!(type & CLIENTWRITE_BODY))
-+  if(!(type & CLIENTWRITE_BODY) || !nbytes)
-     return Curl_cwriter_write(data, writer->next, type, buf, nbytes);
- 
-   /* Set the compressed input when this function is called */
-@@ -457,7 +457,7 @@ static CURLcode gzip_do_write(struct Curl_easy *data,
-   struct zlib_writer *zp = (struct zlib_writer *) writer;
-   z_stream *z = &zp->z;     /* zlib state structure */
- 
--  if(!(type & CLIENTWRITE_BODY))
-+  if(!(type & CLIENTWRITE_BODY) || !nbytes)
-     return Curl_cwriter_write(data, writer->next, type, buf, nbytes);
- 
-   if(zp->zlib_init == ZLIB_INIT_GZIP) {
-@@ -669,7 +669,7 @@ static CURLcode brotli_do_write(struct Curl_easy *data,
-   CURLcode result = CURLE_OK;
-   BrotliDecoderResult r = BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT;
- 
--  if(!(type & CLIENTWRITE_BODY))
-+  if(!(type & CLIENTWRITE_BODY) || !nbytes)
-     return Curl_cwriter_write(data, writer->next, type, buf, nbytes);
- 
-   if(!bp->br)
-@@ -762,7 +762,7 @@ static CURLcode zstd_do_write(struct Curl_easy *data,
-   ZSTD_outBuffer out;
-   size_t errorCode;
- 
--  if(!(type & CLIENTWRITE_BODY))
-+  if(!(type & CLIENTWRITE_BODY) || !nbytes)
-     return Curl_cwriter_write(data, writer->next, type, buf, nbytes);
- 
-   if(!zp->decomp) {
-@@ -916,7 +916,7 @@ static CURLcode error_do_write(struct Curl_easy *data,
-   (void) buf;
-   (void) nbytes;
- 
--  if(!(type & CLIENTWRITE_BODY))
-+  if(!(type & CLIENTWRITE_BODY) || !nbytes)
-     return Curl_cwriter_write(data, writer->next, type, buf, nbytes);
- 
-   failf(data, "Unrecognized content encoding type. "
---- a/tests/http/test_02_download.py
-+++ b/tests/http/test_02_download.py
-@@ -394,6 +394,19 @@ def test_02_27_paused_no_cl(self, env: Env, httpd, nghttpx, repeat):
-         r = client.run(args=[url])
-         r.check_exit_code(0)
- 
-+    @pytest.mark.parametrize("proto", ['http/1.1', 'h2', 'h3'])
-+    def test_02_28_get_compressed(self, env: Env, httpd, nghttpx, repeat, proto):
-+        if proto == 'h3' and not env.have_h3():
-+            pytest.skip("h3 not supported")
-+        count = 1
-+        urln = f'https://{env.authority_for(env.domain1brotli, proto)}/data-100k?[0-{count-1}]'
-+        curl = CurlClient(env=env)
-+        r = curl.http_download(urls=[urln], alpn_proto=proto, extra_args=[
-+            '--compressed'
-+        ])
-+        r.check_exit_code(code=0)
-+        r.check_response(count=count, http_status=200)
-+
-     def check_downloads(self, client, srcfile: str, count: int,
-                         complete: bool = True):
-         for i in range(count):
---- a/tests/http/testenv/env.py
-+++ b/tests/http/testenv/env.py
-@@ -129,10 +129,11 @@ def __init__(self):
-         self.htdocs_dir = os.path.join(self.gen_dir, 'htdocs')
-         self.tld = 'http.curl.se'
-         self.domain1 = f"one.{self.tld}"
-+        self.domain1brotli = f"brotli.one.{self.tld}"
-         self.domain2 = f"two.{self.tld}"
-         self.proxy_domain = f"proxy.{self.tld}"
-         self.cert_specs = [
--            CertificateSpec(domains=[self.domain1, 'localhost'], key_type='rsa2048'),
-+            CertificateSpec(domains=[self.domain1, self.domain1brotli, 'localhost'], key_type='rsa2048'),
-             CertificateSpec(domains=[self.domain2], key_type='rsa2048'),
-             CertificateSpec(domains=[self.proxy_domain, '127.0.0.1'], key_type='rsa2048'),
-             CertificateSpec(name="clientsX", sub_specs=[
-@@ -376,6 +377,10 @@ def htdocs_dir(self) -> str:
-     def domain1(self) -> str:
-         return self.CONFIG.domain1
- 
-+    @property
-+    def domain1brotli(self) -> str:
-+        return self.CONFIG.domain1brotli
-+
-     @property
-     def domain2(self) -> str:
-         return self.CONFIG.domain2
---- a/tests/http/testenv/httpd.py
-+++ b/tests/http/testenv/httpd.py
-@@ -50,6 +50,7 @@ class Httpd:
-         'alias', 'env', 'filter', 'headers', 'mime', 'setenvif',
-         'socache_shmcb',
-         'rewrite', 'http2', 'ssl', 'proxy', 'proxy_http', 'proxy_connect',
-+        'brotli',
-         'mpm_event',
-     ]
-     COMMON_MODULES_DIRS = [
-@@ -203,6 +204,7 @@ def _mkpath(self, path):
- 
-     def _write_config(self):
-         domain1 = self.env.domain1
-+        domain1brotli = self.env.domain1brotli
-         creds1 = self.env.get_credentials(domain1)
-         domain2 = self.env.domain2
-         creds2 = self.env.get_credentials(domain2)
-@@ -285,6 +287,24 @@ def _write_config(self):
-                 f'</VirtualHost>',
-                 f'',
-             ])
-+            # Alternate to domain1 with BROTLI compression
-+            conf.extend([  # https host for domain1, h1 + h2
-+                f'<VirtualHost *:{self.env.https_port}>',
-+                f'    ServerName {domain1brotli}',
-+                f'    Protocols h2 http/1.1',
-+                f'    SSLEngine on',
-+                f'    SSLCertificateFile {creds1.cert_file}',
-+                f'    SSLCertificateKeyFile {creds1.pkey_file}',
-+                f'    DocumentRoot "{self._docs_dir}"',
-+                f'    SetOutputFilter BROTLI_COMPRESS',
-+            ])
-+            conf.extend(self._curltest_conf(domain1))
-+            if domain1 in self._extra_configs:
-+                conf.extend(self._extra_configs[domain1])
-+            conf.extend([
-+                f'</VirtualHost>',
-+                f'',
-+            ])
-             conf.extend([  # https host for domain2, no h2
-                 f'<VirtualHost *:{self.env.https_port}>',
-                 f'    ServerName {domain2}',

diff --git a/net-misc/curl/files/curl-8.7.1-http2-git-clone.patch b/net-misc/curl/files/curl-8.7.1-http2-git-clone.patch
deleted file mode 100644
index b07a3b0..0000000
--- a/net-misc/curl/files/curl-8.7.1-http2-git-clone.patch
+++ /dev/null
@@ -1,342 +0,0 @@
-https://bugs.gentoo.org/930633
-https://github.com/curl/curl/issues/13474
---- a/lib/http2.c
-+++ b/lib/http2.c
-@@ -187,6 +187,7 @@ struct h2_stream_ctx {
- 
-   int status_code; /* HTTP response status code */
-   uint32_t error; /* stream error code */
-+  CURLcode xfer_result; /* Result of writing out response */
-   uint32_t local_window_size; /* the local recv window size */
-   int32_t id; /* HTTP/2 protocol identifier for stream */
-   BIT(resp_hds_complete); /* we have a complete, final response */
-@@ -945,12 +946,39 @@ fail:
-   return rv;
- }
- 
--static CURLcode recvbuf_write_hds(struct Curl_cfilter *cf,
-+static void h2_xfer_write_resp_hd(struct Curl_cfilter *cf,
-                                   struct Curl_easy *data,
--                                  const char *buf, size_t blen)
-+                                  struct h2_stream_ctx *stream,
-+                                  const char *buf, size_t blen, bool eos)
- {
--  (void)cf;
--  return Curl_xfer_write_resp(data, (char *)buf, blen, FALSE);
-+
-+  /* If we already encountered an error, skip further writes */
-+  if(!stream->xfer_result) {
-+    stream->xfer_result = Curl_xfer_write_resp(data, (char *)buf, blen, eos);
-+    if(stream->xfer_result)
-+      CURL_TRC_CF(data, cf, "[%d] error %d writing %zu bytes of headers",
-+                  stream->id, stream->xfer_result, blen);
-+  }
-+}
-+
-+static void h2_xfer_write_resp(struct Curl_cfilter *cf,
-+                               struct Curl_easy *data,
-+                               struct h2_stream_ctx *stream,
-+                               const char *buf, size_t blen, bool eos)
-+{
-+
-+  /* If we already encountered an error, skip further writes */
-+  if(!stream->xfer_result)
-+    stream->xfer_result = Curl_xfer_write_resp(data, (char *)buf, blen, eos);
-+  /* If the transfer write is errored, we do not want any more data */
-+  if(stream->xfer_result) {
-+    struct cf_h2_ctx *ctx = cf->ctx;
-+    CURL_TRC_CF(data, cf, "[%d] error %d writing %zu bytes of data, "
-+                "RST-ing stream",
-+                stream->id, stream->xfer_result, blen);
-+    nghttp2_submit_rst_stream(ctx->h2, 0, stream->id,
-+                              NGHTTP2_ERR_CALLBACK_FAILURE);
-+  }
- }
- 
- static CURLcode on_stream_frame(struct Curl_cfilter *cf,
-@@ -960,7 +988,6 @@ static CURLcode on_stream_frame(struct Curl_cfilter *cf,
-   struct cf_h2_ctx *ctx = cf->ctx;
-   struct h2_stream_ctx *stream = H2_STREAM_CTX(data);
-   int32_t stream_id = frame->hd.stream_id;
--  CURLcode result;
-   int rv;
- 
-   if(!stream) {
-@@ -1008,9 +1035,7 @@ static CURLcode on_stream_frame(struct Curl_cfilter *cf,
-       stream->status_code = -1;
-     }
- 
--    result = recvbuf_write_hds(cf, data, STRCONST("\r\n"));
--    if(result)
--      return result;
-+    h2_xfer_write_resp_hd(cf, data, stream, STRCONST("\r\n"), stream->closed);
- 
-     if(stream->status_code / 100 != 1) {
-       stream->resp_hds_complete = TRUE;
-@@ -1229,7 +1254,6 @@ static int on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
-   struct cf_h2_ctx *ctx = cf->ctx;
-   struct h2_stream_ctx *stream;
-   struct Curl_easy *data_s;
--  CURLcode result;
-   (void)flags;
- 
-   DEBUGASSERT(stream_id); /* should never be a zero stream ID here */
-@@ -1252,9 +1276,7 @@ static int on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
-   if(!stream)
-     return NGHTTP2_ERR_CALLBACK_FAILURE;
- 
--  result = Curl_xfer_write_resp(data_s, (char *)mem, len, FALSE);
--  if(result && result != CURLE_AGAIN)
--    return NGHTTP2_ERR_CALLBACK_FAILURE;
-+  h2_xfer_write_resp(cf, data_s, stream, (char *)mem, len, FALSE);
- 
-   nghttp2_session_consume(ctx->h2, stream_id, len);
-   stream->nrcvd_data += (curl_off_t)len;
-@@ -1465,16 +1487,12 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
-     result = Curl_headers_push(data_s, buffer, CURLH_PSEUDO);
-     if(result)
-       return NGHTTP2_ERR_CALLBACK_FAILURE;
--    result = recvbuf_write_hds(cf, data_s, STRCONST("HTTP/2 "));
--    if(result)
--      return NGHTTP2_ERR_CALLBACK_FAILURE;
--    result = recvbuf_write_hds(cf, data_s, (const char *)value, valuelen);
--    if(result)
--      return NGHTTP2_ERR_CALLBACK_FAILURE;
-+    h2_xfer_write_resp_hd(cf, data_s, stream, STRCONST("HTTP/2 "), FALSE);
-+    h2_xfer_write_resp_hd(cf, data_s, stream,
-+                          (const char *)value, valuelen, FALSE);
-     /* the space character after the status code is mandatory */
--    result = recvbuf_write_hds(cf, data_s, STRCONST(" \r\n"));
--    if(result)
--      return NGHTTP2_ERR_CALLBACK_FAILURE;
-+    h2_xfer_write_resp_hd(cf, data_s, stream, STRCONST(" \r\n"), FALSE);
-+
-     /* if we receive data for another handle, wake that up */
-     if(CF_DATA_CURRENT(cf) != data_s)
-       Curl_expire(data_s, 0, EXPIRE_RUN_NOW);
-@@ -1487,18 +1505,13 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
-   /* nghttp2 guarantees that namelen > 0, and :status was already
-      received, and this is not pseudo-header field . */
-   /* convert to an HTTP1-style header */
--  result = recvbuf_write_hds(cf, data_s, (const char *)name, namelen);
--  if(result)
--    return NGHTTP2_ERR_CALLBACK_FAILURE;
--  result = recvbuf_write_hds(cf, data_s, STRCONST(": "));
--  if(result)
--    return NGHTTP2_ERR_CALLBACK_FAILURE;
--  result = recvbuf_write_hds(cf, data_s, (const char *)value, valuelen);
--  if(result)
--    return NGHTTP2_ERR_CALLBACK_FAILURE;
--  result = recvbuf_write_hds(cf, data_s, STRCONST("\r\n"));
--  if(result)
--    return NGHTTP2_ERR_CALLBACK_FAILURE;
-+  h2_xfer_write_resp_hd(cf, data_s, stream,
-+                        (const char *)name, namelen, FALSE);
-+  h2_xfer_write_resp_hd(cf, data_s, stream, STRCONST(": "), FALSE);
-+  h2_xfer_write_resp_hd(cf, data_s, stream,
-+                        (const char *)value, valuelen, FALSE);
-+  h2_xfer_write_resp_hd(cf, data_s, stream, STRCONST("\r\n"), FALSE);
-+
-   /* if we receive data for another handle, wake that up */
-   if(CF_DATA_CURRENT(cf) != data_s)
-     Curl_expire(data_s, 0, EXPIRE_RUN_NOW);
-@@ -1799,7 +1812,12 @@ static ssize_t stream_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
- 
-   (void)buf;
-   *err = CURLE_AGAIN;
--  if(stream->closed) {
-+  if(stream->xfer_result) {
-+    CURL_TRC_CF(data, cf, "[%d] xfer write failed", stream->id);
-+    *err = stream->xfer_result;
-+    nread = -1;
-+  }
-+  else if(stream->closed) {
-     CURL_TRC_CF(data, cf, "[%d] returning CLOSE", stream->id);
-     nread = http2_handle_stream_close(cf, data, stream, err);
-   }
---- a/lib/vquic/curl_ngtcp2.c
-+++ b/lib/vquic/curl_ngtcp2.c
-@@ -152,6 +152,7 @@ struct h3_stream_ctx {
-   uint64_t error3; /* HTTP/3 stream error code */
-   curl_off_t upload_left; /* number of request bytes left to upload */
-   int status_code; /* HTTP status code */
-+  CURLcode xfer_result; /* result from xfer_resp_write(_hd) */
-   bool resp_hds_complete; /* we have a complete, final response */
-   bool closed; /* TRUE on stream close */
-   bool reset;  /* TRUE on stream reset */
-@@ -759,10 +760,39 @@ static int cb_h3_stream_close(nghttp3_conn *conn, int64_t stream_id,
-   return 0;
- }
- 
--static CURLcode write_resp_hds(struct Curl_easy *data,
--                               const char *buf, size_t blen)
-+static void h3_xfer_write_resp_hd(struct Curl_cfilter *cf,
-+                                  struct Curl_easy *data,
-+                                  struct h3_stream_ctx *stream,
-+                                  const char *buf, size_t blen, bool eos)
- {
--  return Curl_xfer_write_resp(data, (char *)buf, blen, FALSE);
-+
-+  /* If we already encountered an error, skip further writes */
-+  if(!stream->xfer_result) {
-+    stream->xfer_result = Curl_xfer_write_resp(data, (char *)buf, blen, eos);
-+    if(stream->xfer_result)
-+      CURL_TRC_CF(data, cf, "[%"PRId64"] error %d writing %zu "
-+                  "bytes of headers", stream->id, stream->xfer_result, blen);
-+  }
-+}
-+
-+static void h3_xfer_write_resp(struct Curl_cfilter *cf,
-+                               struct Curl_easy *data,
-+                               struct h3_stream_ctx *stream,
-+                               const char *buf, size_t blen, bool eos)
-+{
-+
-+  /* If we already encountered an error, skip further writes */
-+  if(!stream->xfer_result)
-+    stream->xfer_result = Curl_xfer_write_resp(data, (char *)buf, blen, eos);
-+  /* If the transfer write is errored, we do not want any more data */
-+  if(stream->xfer_result) {
-+    struct cf_ngtcp2_ctx *ctx = cf->ctx;
-+    CURL_TRC_CF(data, cf, "[%"PRId64"] error %d writing %zu bytes "
-+                "of data, cancelling stream",
-+                stream->id, stream->xfer_result, blen);
-+    nghttp3_conn_close_stream(ctx->h3conn, stream->id,
-+                              NGHTTP3_H3_REQUEST_CANCELLED);
-+  }
- }
- 
- static int cb_h3_recv_data(nghttp3_conn *conn, int64_t stream3_id,
-@@ -773,7 +803,6 @@ static int cb_h3_recv_data(nghttp3_conn *conn, int64_t stream3_id,
-   struct cf_ngtcp2_ctx *ctx = cf->ctx;
-   struct Curl_easy *data = stream_user_data;
-   struct h3_stream_ctx *stream = H3_STREAM_CTX(data);
--  CURLcode result;
- 
-   (void)conn;
-   (void)stream3_id;
-@@ -781,12 +810,7 @@ static int cb_h3_recv_data(nghttp3_conn *conn, int64_t stream3_id,
-   if(!stream)
-     return NGHTTP3_ERR_CALLBACK_FAILURE;
- 
--  result = Curl_xfer_write_resp(data, (char *)buf, blen, FALSE);
--  if(result) {
--    CURL_TRC_CF(data, cf, "[%" PRId64 "] DATA len=%zu, ERROR receiving %d",
--                stream->id, blen, result);
--    return NGHTTP3_ERR_CALLBACK_FAILURE;
--  }
-+  h3_xfer_write_resp(cf, data, stream, (char *)buf, blen, FALSE);
-   if(blen) {
-     CURL_TRC_CF(data, cf, "[%" PRId64 "] ACK %zu bytes of DATA",
-                 stream->id, blen);
-@@ -819,7 +843,6 @@ static int cb_h3_end_headers(nghttp3_conn *conn, int64_t stream_id,
-   struct Curl_cfilter *cf = user_data;
-   struct Curl_easy *data = stream_user_data;
-   struct h3_stream_ctx *stream = H3_STREAM_CTX(data);
--  CURLcode result = CURLE_OK;
-   (void)conn;
-   (void)stream_id;
-   (void)fin;
-@@ -828,10 +851,7 @@ static int cb_h3_end_headers(nghttp3_conn *conn, int64_t stream_id,
-   if(!stream)
-     return 0;
-   /* add a CRLF only if we've received some headers */
--  result = write_resp_hds(data, "\r\n", 2);
--  if(result) {
--    return -1;
--  }
-+  h3_xfer_write_resp_hd(cf, data, stream, STRCONST("\r\n"), stream->closed);
- 
-   CURL_TRC_CF(data, cf, "[%" PRId64 "] end_headers, status=%d",
-               stream_id, stream->status_code);
-@@ -874,7 +894,7 @@ static int cb_h3_recv_header(nghttp3_conn *conn, int64_t stream_id,
-     ncopy = msnprintf(line, sizeof(line), "HTTP/3 %03d \r\n",
-                       stream->status_code);
-     CURL_TRC_CF(data, cf, "[%" PRId64 "] status: %s", stream_id, line);
--    result = write_resp_hds(data, line, ncopy);
-+    h3_xfer_write_resp_hd(cf, data, stream, line, ncopy, FALSE);
-     if(result) {
-       return -1;
-     }
-@@ -884,22 +904,12 @@ static int cb_h3_recv_header(nghttp3_conn *conn, int64_t stream_id,
-     CURL_TRC_CF(data, cf, "[%" PRId64 "] header: %.*s: %.*s",
-                 stream_id, (int)h3name.len, h3name.base,
-                 (int)h3val.len, h3val.base);
--    result = write_resp_hds(data, (const char *)h3name.base, h3name.len);
--    if(result) {
--      return -1;
--    }
--    result = write_resp_hds(data, ": ", 2);
--    if(result) {
--      return -1;
--    }
--    result = write_resp_hds(data, (const char *)h3val.base, h3val.len);
--    if(result) {
--      return -1;
--    }
--    result = write_resp_hds(data, "\r\n", 2);
--    if(result) {
--      return -1;
--    }
-+    h3_xfer_write_resp_hd(cf, data, stream,
-+                          (const char *)h3name.base, h3name.len, FALSE);
-+    h3_xfer_write_resp_hd(cf, data, stream, ": ", 2, FALSE);
-+    h3_xfer_write_resp_hd(cf, data, stream, (
-+                          const char *)h3val.base, h3val.len, FALSE);
-+    h3_xfer_write_resp_hd(cf, data, stream, "\r\n", 2, FALSE);
-   }
-   return 0;
- }
-@@ -1083,7 +1093,13 @@ static ssize_t cf_ngtcp2_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
-     goto out;
-   }
- 
--  if(stream->closed) {
-+  if(stream->xfer_result) {
-+    CURL_TRC_CF(data, cf, "[%" PRId64 "] xfer write failed", stream->id);
-+    *err = stream->xfer_result;
-+    nread = -1;
-+    goto out;
-+  }
-+  else if(stream->closed) {
-     nread = recv_closed_stream(cf, data, stream, err);
-     goto out;
-   }
---- a/tests/http/test_02_download.py
-+++ b/tests/http/test_02_download.py
-@@ -257,6 +257,34 @@ class TestDownload:
-         ])
-         r.check_response(count=count, http_status=200)
- 
-+    @pytest.mark.parametrize("proto", ['h2', 'h3'])
-+    def test_02_14_not_found(self, env: Env, httpd, nghttpx, repeat, proto):
-+        if proto == 'h3' and not env.have_h3():
-+            pytest.skip("h3 not supported")
-+        if proto == 'h3' and env.curl_uses_lib('msh3'):
-+            pytest.skip("msh3 stalls here")
-+        count = 10
-+        urln = f'https://{env.authority_for(env.domain1, proto)}/not-found?[0-{count-1}]'
-+        curl = CurlClient(env=env)
-+        r = curl.http_download(urls=[urln], alpn_proto=proto, extra_args=[
-+            '--parallel'
-+        ])
-+        r.check_stats(count=count, http_status=404, exitcode=0)
-+
-+    @pytest.mark.parametrize("proto", ['h2', 'h3'])
-+    def test_02_15_fail_not_found(self, env: Env, httpd, nghttpx, repeat, proto):
-+        if proto == 'h3' and not env.have_h3():
-+            pytest.skip("h3 not supported")
-+        if proto == 'h3' and env.curl_uses_lib('msh3'):
-+            pytest.skip("msh3 stalls here")
-+        count = 10
-+        urln = f'https://{env.authority_for(env.domain1, proto)}/not-found?[0-{count-1}]'
-+        curl = CurlClient(env=env)
-+        r = curl.http_download(urls=[urln], alpn_proto=proto, extra_args=[
-+            '--fail'
-+        ])
-+        r.check_stats(count=count, http_status=404, exitcode=22)
-+
-     @pytest.mark.skipif(condition=Env().slow_network, reason="not suitable for slow network tests")
-     @pytest.mark.skipif(condition=Env().ci_run, reason="not suitable for CI runs")
-     def test_02_20_h2_small_frames(self, env: Env, httpd, repeat):
-

diff --git a/net-misc/curl/files/curl-8.7.1-rustls-fixes.patch b/net-misc/curl/files/curl-8.7.1-rustls-fixes.patch
deleted file mode 100644
index 81bcb07..0000000
--- a/net-misc/curl/files/curl-8.7.1-rustls-fixes.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From a866b062b17ab94b16b817ab9969c561364a4d72 Mon Sep 17 00:00:00 2001
-From: Matt Jolly <Matt.Jolly@footclan.ninja>
-Date: Mon, 1 Apr 2024 08:36:51 +1000
-Subject: [PATCH] m4: fix rustls builds
-
-This patch consolidates the following commits to do with rustls
-detection using pkg-config:
-
-- https://github.com/curl/curl/commit/9c4209837094781d5eef69ae6bcad0e86b64bf99
-- https://github.com/curl/curl/commit/5a50cb5a18a141a463148562dab83fa3be1a3b90
----
- m4/curl-rustls.m4 | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-diff --git a/m4/curl-rustls.m4 b/m4/curl-rustls.m4
-index 7c55230..8082cf9 100644
---- a/m4/curl-rustls.m4
-+++ b/m4/curl-rustls.m4
-@@ -142,6 +142,11 @@ if test "x$OPT_RUSTLS" != xno; then
-       LIBS="$SSL_LIBS $LIBS"
-       USE_RUSTLS="yes"
-       ssl_msg="rustls"
-+      AC_DEFINE(USE_RUSTLS, 1, [if rustls is enabled])
-+      AC_SUBST(USE_RUSTLS, [1])
-+      USE_RUSTLS="yes"
-+      RUSTLS_ENABLED=1
-+      test rustls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
-     else
-       AC_MSG_ERROR([pkg-config: Could not find rustls])
-     fi
-@@ -174,5 +179,15 @@ if test "x$OPT_RUSTLS" != xno; then
-   fi
- 
-   test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
-+
-+  if test X"$OPT_RUSTLS" != Xno &&
-+    test "$RUSTLS_ENABLED" != "1"; then
-+    AC_MSG_NOTICE([OPT_RUSTLS: $OPT_RUSTLS])
-+    AC_MSG_NOTICE([RUSTLS_ENABLED: $RUSTLS_ENABLED])
-+    AC_MSG_ERROR([--with-rustls was given but Rustls could not be detected])
-+  fi
- fi
- ])
-+
-+
-+RUSTLS_ENABLED
--- 
-2.44.0
-

diff --git a/net-misc/curl/files/curl-prefix.patch b/net-misc/curl/files/curl-prefix.patch
deleted file mode 100644
index fd495c4..0000000
--- a/net-misc/curl/files/curl-prefix.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -Naur curl-7.30.0.orig/curl-config.in curl-7.30.0/curl-config.in
---- curl-7.30.0.orig/curl-config.in	2013-02-06 09:44:37.000000000 -0500
-+++ curl-7.30.0/curl-config.in	2013-04-17 18:43:56.000000000 -0400
-@@ -134,7 +134,7 @@
-         else
-           CPPFLAG_CURL_STATICLIB=""
-         fi
--        if test "X@includedir@" = "X/usr/include"; then
-+        if test "X@includedir@" = "X@GENTOO_PORTAGE_EPREFIX@/usr/include"; then
-           echo "$CPPFLAG_CURL_STATICLIB"
-         else
-           echo "${CPPFLAG_CURL_STATICLIB}-I@includedir@"
-@@ -142,7 +142,7 @@
-         ;;
- 
-     --libs)
--        if test "X@libdir@" != "X/usr/lib" -a "X@libdir@" != "X/usr/lib64"; then
-+        if test "X@libdir@" != "X@GENTOO_PORTAGE_EPREFIX@/usr/lib" -a "X@libdir@" != "X@GENTOO_PORTAGE_EPREFIX@/usr/lib64"; then
-            CURLLIBDIR="-L@libdir@ "
-         else
-            CURLLIBDIR=""


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2025-01-04 15:17 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-04 15:17 [gentoo-commits] repo/proj/libressl:master commit in: net-misc/curl/files/ orbea

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox