summaryrefslogtreecommitdiff
path: root/net-misc
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2024-12-24 06:30:58 +0000
committerV3n3RiX <venerix@koprulu.sector>2024-12-24 06:30:58 +0000
commit17e417b73cb3e25edbc6541bd107bc9c593d66bd (patch)
tree866f98b73f846149d0c9e7e5a1cf0527b7c54e08 /net-misc
parent338095605b6c9c82690f77f27a32490c9a57bdcb (diff)
gentoo auto-resync : 24:12:2024 - 06:30:57
Diffstat (limited to 'net-misc')
-rw-r--r--net-misc/Manifest.gzbin54142 -> 54141 bytes
-rw-r--r--net-misc/curl/Manifest5
-rw-r--r--net-misc/curl/files/curl-8.7.1-chunked-post.patch57
-rw-r--r--net-misc/curl/files/curl-8.7.1-fix-compress-option.patch153
-rw-r--r--net-misc/curl/files/curl-8.7.1-http2-git-clone.patch342
-rw-r--r--net-misc/curl/files/curl-8.7.1-rustls-fixes.patch49
-rw-r--r--net-misc/curl/files/curl-prefix.patch21
-rw-r--r--net-misc/smb4k/Manifest4
-rw-r--r--net-misc/smb4k/smb4k-3.2.92.ebuild (renamed from net-misc/smb4k/smb4k-3.2.91.ebuild)0
-rw-r--r--net-misc/sshpass/Manifest2
-rw-r--r--net-misc/sshpass/sshpass-1.09-r1.ebuild14
-rw-r--r--net-misc/yt-dlp/Manifest2
-rw-r--r--net-misc/yt-dlp/yt-dlp-2024.12.23.ebuild70
13 files changed, 74 insertions, 645 deletions
diff --git a/net-misc/Manifest.gz b/net-misc/Manifest.gz
index 464a40dd0f54..ff87f890b1de 100644
--- a/net-misc/Manifest.gz
+++ b/net-misc/Manifest.gz
Binary files differ
diff --git a/net-misc/curl/Manifest b/net-misc/curl/Manifest
index b32b31402aae..ea776dfc1373 100644
--- a/net-misc/curl/Manifest
+++ b/net-misc/curl/Manifest
@@ -6,17 +6,12 @@ AUX curl-8.11.0-mbedtls-global-init.patch 1868 BLAKE2B 722959cd1f70d336f093ae833
AUX curl-8.11.0-netrc-large-file.patch 719 BLAKE2B b7a838f76a6c6eba341bacb7826caf1c7ca73c57a3b60f8136b47b32e91bfe3b0663d47b3273095b8a93736ceda96833d25f106d82efbc7afe6315020bfca798 SHA512 ef0d4204e6ca7bee17ccebf20ea6873076a571819bcece058eae7e6c3a62bff431d6161aa4da0725ea1e8b278f121d682361f4df1fe4adc58a1375e611a510a8
AUX curl-8.11.0-setopt-http_content_decoding.patch 691 BLAKE2B a812c178c0a3a4f5dc78fc576c9aef247de70eb32ab02b96e2e1e5b9428e6928c538e0a981ac98ae2f1428ae4c12bad767e1efc32a48a21ed99e0afc50180ec6 SHA512 9ef6fca7ae98bce6cee40ca5c25e7a22e937e0118bcee948e95cb8a8c5e6ca3f7e8b2327716cf7d55d976bfd6d30d57617d7da52ff971b82b22ff33878fa1d3e
AUX curl-8.11.1-async-thread-close-eventfd.patch 1080 BLAKE2B fa1ff8ff20870c80a4c7dd0ef2ec116ce78a987b9659a77f513c44b6237f0b0b6bf48e547cefd6e157d85ee6113669bffe02e6f7321b19a8ffec12caa2d655f4 SHA512 a4662fbea884a05e151c0d100e012e9f1c1f8de53f70f20c9df6fc54ea9d293211475dd084bae32bf0508c7438971f921f6840cae4e9424589511dbe44584609
-AUX curl-8.7.1-chunked-post.patch 2389 BLAKE2B d283816be5dca19ab0058db1937d686b4f9056caf3c46a8dcd731bc69ae91df1b01d10f643ce127eeec7aac0e9282f8b5c5109fe1cea82b30d2cf3270e93ae24 SHA512 3b1a67010704f4863f973e79d6a695e6e13b938fbaa695a05bc92b1a577fa5852c310b38f9c88518275f82c7d088474f5e4c585ac5ff790043e6ca969b0dc1d9
-AUX curl-8.7.1-fix-compress-option.patch 6222 BLAKE2B 7ff5c096fa6cc5cc039f47188a85c49364cdfe6cfeae3a9c58b38939eb59896bcf204c682f36e89ace37a0753236593307e1af45bc2d0f099ff685af8e366713 SHA512 1622adf015a016a205d4bf621715ed06fd345cd45f032ad44b6d9324d398c0e2004f04fe734401b12007c3eb145dac84aa3ce90bdaa9b16e09b5908da75f902f
-AUX curl-8.7.1-http2-git-clone.patch 14120 BLAKE2B 5bc2c0765ebd400f2e79d0552621c98640c757f189ae0fa029d8fb6d9fa74ac0e4fd93948fed6bc7f93b329e30948a585be1f20dde18423acf162cd36b4fb166 SHA512 278720daae7d4d3288502e0dd2b591ada66a559040eb341b0cf5673094e9d214eb166772279378487da96f43912313e04d3b174fdcb2b2cbfa766f241df62f34
-AUX curl-8.7.1-rustls-fixes.patch 1526 BLAKE2B c1ce730bc1d78d9655378a174b32706bc964e07b1b4fde5385212542bf0c85b2adfa8110266410b6d8766bb2ca5c46a58295d7098ab4acb71acb0a5dbd6d5d20 SHA512 7ca3004306595ead6057bbbfa6dcbb5d7b8b7782a7627e5607a916fff8626b4c3bfb2cbac48aa0e65a93b3c4fb0f87a7ee09273f1f9b1eadb9126fbcc4a72ce2
AUX curl-8.8.0-install-manpage.patch 659 BLAKE2B 44a303863fb826d0fca139c8a9091ce1e9ed461f3ee1545b4c3fb9a03dae2f707622b61d4f34345bafcccab751f989972eead676de5a784b5af138a1cc0e467c SHA512 0d5acfb2cf32b3855a29e01cacc5b3f06014832ca0adfa554938b3b06658dd63a4bac75932b4476b856f4c9adb096217bbb549b1a81a4a012f8b668cb9420079
AUX curl-8.8.0-mbedtls.patch 1686 BLAKE2B 6bafbfcf8c418e0507dc910aafe8667c3a71c535fa13f329ef67087edb4f6dcbe70113f752baf8a9ac6c72424045a3111b4e21992c84c7d2cd66684cfaa0ad0f SHA512 07ae1a42da92a200bbc72d911ecbf83b93df2a2be6022605842fc08bc870e466b19b6dc78298039027266155a5c9fcc81f05107fdbdfba4cfac4ddaad4d2a586
AUX curl-8.8.0-multi_wait-timeout.patch 2732 BLAKE2B ae2f40f6dcec16761d959fe5eeaff531ff3ac2c2cd26d676261ecac406653c3d560941455f6d46dd1552f20429582173e45f05865cbdd009c28f21de6a98a458 SHA512 1fbb5506ce1b87c90ea2d029adb9eaccb9930203c8aa0c119666cbee6fc1fc190423f02592bb2620ca3fa1b60822fc704bbc6f671152e877b2383173260acb04
AUX curl-8.9.1-sigpipe.patch 773 BLAKE2B 7ef3bbd4ca9558621b4f1ea5cb9847705cd6331b7f3d5d2a950642d090c789b802c0ff4f96ff2805b9e1dfe807b14daaee223dbcb2ff1426458dadb3e71d1e79 SHA512 55e55da046425e9a60064ff79ec3f8ab37a10275210f46cfb10ad29e9a29cb137a28ba6a0effa90bfc46d687aab929565b97bfa7549ac8a202746e332d1fa6ed
AUX curl-prefix-2.patch 1075 BLAKE2B 657ac450c9d50a08f62be72dc9d1bc68c494dcc0c8153f1a89d5cb50d240aa6bcd56b48242ed3ea1352da5cd5d98b8c6daaff6fdcc672a95a0233db1f8d27bdd SHA512 91a531291426477a68108dcc40656e6a56caabfda26f351d4b7cdb39e66f500ffd532f2417a81c5a789ea624b4f6325aa8006155292910612e54ab3d9daa3620
AUX curl-prefix-3.patch 1068 BLAKE2B dbaf21f38874a308557997d6a3a7a1f9fdb817b22d9846b4d6bd2bae413b7177650f20f17b10bfcc4a6747a89470dc2672ce79ba67d08fc92ebbbba353ba6c3a SHA512 c10a0062564be885f36e7c37bb58f3aa59c387369b9aae6342f818d4671e31cec99fd9ddda3577f03d1f8e87b926b8d75b006ca543f41a264e8595af79242b62
-AUX curl-prefix.patch 880 BLAKE2B 5b7552a8339014221864a585d174b02a96ec7dd7fe8762d331d1981834044f8ec4db64d527a4ded3f5f4cccc86f281576668de092439eb19f5477d5fcf8369cf SHA512 c7cd13b9ccbd12ed01ea121ffece9c23b898a5b34698bae59ae1dd23b1cf2445180b84d80c4a640981f16dba5018df944f405dd5c660addab54ca21e0e673b7f
AUX curl-respect-cflags-3.patch 406 BLAKE2B 1b533144858aff5566150c4a2648ad2e48e8ff29849ae285592edfee4b3332d06e750395dea7190ee6a01d2b5ee2c2c42c10400c2e5defa09963a90a1a10417d SHA512 3219e4e67d534e35012909243fc8d69d58989462db44dd507c502e7aaa299f1d9a01392e2c83797cc2bdb53d503470c5d6e7bf94572a6ccc6e5eafcc0466bc54
DIST curl-8.10.1.tar.xz 2726748 BLAKE2B bfdfa24f6d652884044c5e8eea5d70daad651b46255c99c9df502f9595a2dcbf8c4034446becf9e87f8e8a3f397a8fda29ab3e0d6020ac0dae62dd42b8136b78 SHA512 f1c7a12492dcfb8ba08be69b96a83ce9074592cbaa6b95c72b3c16fc58ad35e9f9deec7b72baca7d360d013b0b1c7ea38bd4edae464903ac67aa3c76238d8c6c
DIST curl-8.10.1.tar.xz.asc 488 BLAKE2B 8e8f2b628d4e8964a76c1c43c5557aacbfc2d2dbc51be8a0fa1b157c257f15f29aedba842cba7cb270c4adcf0b4a5d9c8b0b3d49633c48b061fb3e1472303d66 SHA512 21d6d560c027efc9e3e5db182a77501d6376442221ba910df817e2ec980bee44a9fe2afc698205f8d5e8313ae47915a341d60206a46b46e816d73ee357a894ac
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 9d1fef73d383..000000000000
--- 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 a06a53729533..000000000000
--- 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 b07a3b0a8817..000000000000
--- 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 81bcb0734339..000000000000
--- 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 fd495c49b132..000000000000
--- 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=""
diff --git a/net-misc/smb4k/Manifest b/net-misc/smb4k/Manifest
index a0682c883c50..aebce366112b 100644
--- a/net-misc/smb4k/Manifest
+++ b/net-misc/smb4k/Manifest
@@ -1,5 +1,5 @@
DIST smb4k-3.2.90.tar.xz 4454108 BLAKE2B 78a0aea75bc6f94438968369a43a1288da9cc9e43c5d0bc676621789c4fa779b5925cdfc2fd098c0c6a8b32629f9461294b37d3990579cc425939a1ee0b201f9 SHA512 27eae38add622bdf7a29c87da1266d394d7de45584988d393444afe48048de391c8ae0a822db26e817de970ece48de9969b4c7d96d8e4b46a1ed1d9c5d71b5dd
-DIST smb4k-3.2.91.tar.xz 4714764 BLAKE2B ef7ebdd4af5852f7fc2a5cd36d1a7092f2cadbab26163c134292f9c7739969d1137089c1a169a9a72ccf12a2406b87dfd4c7aa92986cad603b583e53dd1f45c9 SHA512 f1dcb21f5b7de0193ee52df4a8c28b96525a4f4afd68a043026cdb9227aa385a22938890b8dc54dd399d1b52c2be2416d27b077fb5748fa7ef0940d9dc18d1c2
+DIST smb4k-3.2.92.tar.xz 4638924 BLAKE2B 9271d1be02136d51c28a24c2ac2a76de5708baffe76cd97e48867bce35f8f3988f63965d4bcff0f7a03b9f8e7a05af63578dd24b094e10553317a220fda3524e SHA512 a2010667454c5c0d24757c96fadb8a7d672eef201bc399dc99d9031c9b847a878545834422b7de2f5627eabaa8e5d0235da2f41da68e9178f7ee4eb431c878e8
EBUILD smb4k-3.2.90.ebuild 2091 BLAKE2B b0144277db3e10f41401abe00067990d673a6ab802e39d811fc699cd462cd90de99c09f8edd0bc92a5e73405f4717efc1db7cf934101c2f69604b5f394ecb3fe SHA512 f367e9e01776b515097e6d64c894efc027983d4d460542b87e0490b596ebd4fb197517e943a3518c56d6f0ebe3f91028e418e3821b2be9a0d214abcdac9056c5
-EBUILD smb4k-3.2.91.ebuild 2093 BLAKE2B edcd17a283183d1633c3bfec3bdf5a9fe62672f4d0ad9f7ff079a2d49a3bd4f13fce0277fc91ab0e2439548b19c9d1dcc6febef0d86c14fa2f49711744dbb2b0 SHA512 0377c2e14fee898a3d7323c8d173c15d69c5fa23c4e8071150a7dc0ec1bf3b6398fa8ce61dd621f6b41f3f7bd51825f987613abbca6770061e8e4b54ae87e904
+EBUILD smb4k-3.2.92.ebuild 2093 BLAKE2B edcd17a283183d1633c3bfec3bdf5a9fe62672f4d0ad9f7ff079a2d49a3bd4f13fce0277fc91ab0e2439548b19c9d1dcc6febef0d86c14fa2f49711744dbb2b0 SHA512 0377c2e14fee898a3d7323c8d173c15d69c5fa23c4e8071150a7dc0ec1bf3b6398fa8ce61dd621f6b41f3f7bd51825f987613abbca6770061e8e4b54ae87e904
MISC metadata.xml 593 BLAKE2B 087dedf151163d8d8f02f41a9aa08117219c50556e3e60c97bf3bf3175fbe41fe9cdc1f0ada27aacc660095b41edfcb9502d02568bcd9eea26e8cecdbceaebe9 SHA512 f090b6f9b968087c912cc88187089a0eb891e77713fd5aabed03931b9da6f2f6673e48b37edf57de5da3a421f25d82371f9568db302e9e35e64f5f8200a2418e
diff --git a/net-misc/smb4k/smb4k-3.2.91.ebuild b/net-misc/smb4k/smb4k-3.2.92.ebuild
index 6ef6c2969e89..6ef6c2969e89 100644
--- a/net-misc/smb4k/smb4k-3.2.91.ebuild
+++ b/net-misc/smb4k/smb4k-3.2.92.ebuild
diff --git a/net-misc/sshpass/Manifest b/net-misc/sshpass/Manifest
index 843209777804..425010b340d8 100644
--- a/net-misc/sshpass/Manifest
+++ b/net-misc/sshpass/Manifest
@@ -1,5 +1,3 @@
-DIST sshpass-1.09.tar.gz 112857 BLAKE2B b19e1b7d057e286a895312c62453b9aa5369efb3c617bb24fc7b6b0e521d4c65fad091c68b93cda17aef8350c243bdc2c22d5d58590f6359715159d9dca57bae SHA512 9b4ba83ca4d34364e7c43e29f98493dc3d595d24dc68c2fe3c244600d92a0f8bc0a6a7f8f43d64c0b4d714eb196516f297d904fa66035a76dae89a3726c0f2ff
DIST sshpass-1.10.tar.gz 139652 BLAKE2B 8fb0191abeb43c6c345dd4073f01541337f37d7c286679f50108c0d908a9d3a4179e2ee30bdbd81e3ebb0f277d14e1b8f329fac2e03500ebf15334c79069a386 SHA512 d0fbceb956baee79803fec8bd9a2e0d1e342cbc90fb8bb4baa5a01914f870393f43bd07b62aa1da208318b4971005b9bbccf0e926c590124de11a272169db81d
-EBUILD sshpass-1.09-r1.ebuild 428 BLAKE2B 9a0fe879adc8e6d88790ae8b87ce14b04a2c011cc45d91f2a46b635299a3a39d0f0c39587236d0e45443ce62fcf0ae17c9d1334b1702b98d8e4884fa5224bc2e SHA512 7edecb107e3868c86d721edde151435c179f7c872eab2ee1c2401dc26e0992473f9cf6d5fd2e15ee2a477eb6914f3df55e0ce2b2560f6f6baec61b56ebf9869f
EBUILD sshpass-1.10.ebuild 430 BLAKE2B bcff0a647d8a471785e1267f58c01ef64290919190ead9a24dea1d91ee4e8491eb7e02fcc32cbcee96763d6625b415e1c05f1c9bf5c7259b47c3e70936cef3fe SHA512 ffc0f514876d89f67f6662c887b9cfcb6cee245fb111e18a17a14abeaec3678c6afd5d35f44149f89579dd17d6eba150c372375d0dbc2ce7d9668a7ecc7d14aa
MISC metadata.xml 245 BLAKE2B 742dd0549c543a09d1713679990f7aed20165c67c2ecca674c272200e3d4f64d7f1b663d4669792dd476eeb7fc8960e87429f702ee1db96563fb816d3ef8ccee SHA512 f88712849405e0e495d0b476eeeb43814f569db2ec6a24b36ef8065f166c2cc977fbc4c64cf3a7fadf145bedbaa25af2ae3a280e6abaa29a7ad4a010c08f19c5
diff --git a/net-misc/sshpass/sshpass-1.09-r1.ebuild b/net-misc/sshpass/sshpass-1.09-r1.ebuild
deleted file mode 100644
index 319f78fa5220..000000000000
--- a/net-misc/sshpass/sshpass-1.09-r1.ebuild
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DESCRIPTION="Tool for noninteractively performing password authentication with ssh"
-HOMEPAGE="https://sourceforge.net/projects/sshpass/"
-SRC_URI="https://downloads.sourceforge.net/${PN}/${PV}/${P}.tar.gz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="amd64 ~arm arm64 ~ppc64 ~riscv x86 ~x64-macos"
-
-RDEPEND="virtual/openssh"
diff --git a/net-misc/yt-dlp/Manifest b/net-misc/yt-dlp/Manifest
index bff836bb39ff..e54f5f422553 100644
--- a/net-misc/yt-dlp/Manifest
+++ b/net-misc/yt-dlp/Manifest
@@ -1,4 +1,6 @@
DIST yt-dlp-2024.12.13.tar.gz 5813833 BLAKE2B ead14c4922e74e75dcdabe63ed5bb4a91e7d30a3b475acad63c03320a5958190118a886c88a7f5424ed6b7cbb9115c2368b41737b1ad99165f925c3f6a38275b SHA512 369cb303a4bf14b8e872ea3315478c943bc13741eaa4ee1d219df0d5e89d1c46992577acb8530c592e4278da1af7969a25417972c2ca55d84ee0f8e7e25c31b4
+DIST yt-dlp-2024.12.23.tar.gz 5817118 BLAKE2B 99df0c13661d5768bb38545d59ba982365ca62a26c90f7217793b9a386ad932164e4e166c20cb05449cf56950324a56ee3aea56a2fb1fa5258dc8e0872e2e784 SHA512 8b068ebb88fc7339f685dfe999a1814f43098c16bd89033154f872e53e6743090c210ac5cb5cdd783ebd947ac33ecb749b08bbec9c7d7dc41da3424968666ee8
EBUILD yt-dlp-2024.12.13.ebuild 2177 BLAKE2B 5a7c49c8b9c8929ca34cf4e1f271735d0f84f9d860157e3ee6b9c8af0fd7a15b7657a05c0dc79f680f146ed171577f4714ff82708e7134c0848d717722960a4e SHA512 276d7684b50801919ab4b66b169148f65174e1d630e632d4ea7410fecdf0ccff575826e1feb0e4c55d6e8abe934a77f6ccc643a882a577cc0187f438c3c2e404
+EBUILD yt-dlp-2024.12.23.ebuild 2177 BLAKE2B 5a7c49c8b9c8929ca34cf4e1f271735d0f84f9d860157e3ee6b9c8af0fd7a15b7657a05c0dc79f680f146ed171577f4714ff82708e7134c0848d717722960a4e SHA512 276d7684b50801919ab4b66b169148f65174e1d630e632d4ea7410fecdf0ccff575826e1feb0e4c55d6e8abe934a77f6ccc643a882a577cc0187f438c3c2e404
EBUILD yt-dlp-9999.ebuild 2197 BLAKE2B 61f5b720a56c7d82289c8a056146410d4817137e3085215c913a6f765853ac7989587fb98fdcbd52fe2e729137f53a8923f0732ad59522954170102049dac973 SHA512 29f9b741292ddf8333a062827265e589f98d2b2f040b83458f6937846e3f070e577d2aeddca69684182cc176d1ef793e3fd287856ea2164007e6fb639eea209e
MISC metadata.xml 392 BLAKE2B d2aa6fc43f7f9038d320197a18107f15e56ed5e242e6c3cdc1b7111184580ab14fae8cbd16776794d207dd39ea0ca65975c08a54449f4cf90370ea95a66083d9 SHA512 867c61c1e41d7594decd5e10a2b45d934313cb751ba22356fc1ab61e0a40b2543847b195d20c7a39ba92370d8b3908e6f90d690915579b55808872efe8d3cebe
diff --git a/net-misc/yt-dlp/yt-dlp-2024.12.23.ebuild b/net-misc/yt-dlp/yt-dlp-2024.12.23.ebuild
new file mode 100644
index 000000000000..3de67e0bfb4a
--- /dev/null
+++ b/net-misc/yt-dlp/yt-dlp-2024.12.23.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
+inherit bash-completion-r1 distutils-r1 optfeature wrapper
+
+DESCRIPTION="youtube-dl fork with additional features and fixes"
+HOMEPAGE="https://github.com/yt-dlp/yt-dlp/"
+SRC_URI="
+ https://github.com/yt-dlp/yt-dlp/releases/download/${PV}/${PN}.tar.gz
+ -> ${P}.tar.gz
+"
+S=${WORKDIR}/${PN}
+
+LICENSE="Unlicense"
+SLOT="0"
+# note that yt-dlp bumps are typically done straight-to-stable (unless there
+# was major/breaking changes) given website changes breaks it on a whim
+KEYWORDS="amd64 arm arm64 ~hppa ppc ppc64 ~riscv x86 ~arm64-macos ~x64-macos"
+
+RDEPEND="
+ dev-python/pycryptodome[${PYTHON_USEDEP}]
+ !net-misc/youtube-dl[-yt-dlp(-)]
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # fails with FEATURES=network-sandbox
+ test/test_networking.py::TestHTTPRequestHandler::test_connect_timeout
+ # fails with FEATURES=distcc, bug #915614
+ test/test_networking.py::TestYoutubeDLNetworking::test_proxy\[None-expected2\]
+ )
+
+ epytest -m 'not download'
+}
+
+python_install_all() {
+ dodoc README.md Changelog.md supportedsites.md
+ doman yt-dlp.1
+
+ dobashcomp completions/bash/yt-dlp
+
+ insinto /usr/share/fish/vendor_completions.d
+ doins completions/fish/yt-dlp.fish
+
+ insinto /usr/share/zsh/site-functions
+ doins completions/zsh/_yt-dlp
+
+ rm -r "${ED}"/usr/share/doc/yt_dlp || die
+
+ make_wrapper youtube-dl "yt-dlp --compat-options youtube-dl"
+}
+
+pkg_postinst() {
+ optfeature "various features (merging tracks, streamed content)" media-video/ffmpeg
+ has_version media-video/atomicparsley || # allow fallback but don't advertise
+ optfeature "embedding metadata thumbnails in MP4/M4A files" media-libs/mutagen
+ optfeature "decrypting cookies from Chromium-based browsers" dev-python/secretstorage
+
+ if [[ ! ${REPLACING_VERSIONS} ]]; then
+ elog 'A wrapper using "yt-dlp --compat-options youtube-dl" was installed'
+ elog 'as "youtube-dl". This is strictly for compatibility and it is'
+ elog 'recommended to use "yt-dlp" directly, it may be removed in the future.'
+ fi
+}