This commit is contained in:
joborun linux 2022-07-09 00:39:33 +03:00
parent 36b8213689
commit 9b41834fc2
3 changed files with 63 additions and 6 deletions

View File

@ -0,0 +1,40 @@
From 52e822173aa3cd4f610531d32fbf943f026cdca6 Mon Sep 17 00:00:00 2001
From: Thomas Weißschuh <thomas@t-8ch.de>
Date: Sun, 3 Jul 2022 18:20:44 +0200
Subject: select: do not return fatal error on EINTR from poll()
The same was done for select() in 5912da25 but poll() was missed.
Bug: https://bugs.archlinux.org/task/75201
Reported-by: Alexandre Bury (gyscos at archlinux)
Ref: https://github.com/curl/curl/issues/8921
Ref: https://github.com/curl/curl/pull/8961
Ref: https://github.com/curl/curl/commit/5912da25#r77584294
Closes https://github.com/curl/curl/pull/9091
---
lib/select.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/lib/select.c b/lib/select.c
index c16358d56..2ac074677 100644
--- a/lib/select.c
+++ b/lib/select.c
@@ -310,8 +310,12 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, timediff_t timeout_ms)
else
pending_ms = 0;
r = poll(ufds, nfds, pending_ms);
- if(r <= 0)
+ if(r <= 0) {
+ if((r == -1) && (SOCKERRNO == EINTR))
+ /* make EINTR from select or poll not a "lethal" error */
+ r = 0;
return r;
+ }
for(i = 0; i < nfds; i++) {
if(ufds[i].fd == CURL_SOCKET_BAD)
--
cgit v1.2.3-18-g5258

View File

@ -8,7 +8,7 @@
pkgbase=curl
pkgname=(curl libcurl-compat libcurl-gnutls)
pkgver=7.84.0
pkgrel=01
pkgrel=02
pkgdesc='An URL retrieval utility and library - w/o ipv6 & zstd'
arch=('x86_64')
url='https://curl.haxx.se'
@ -17,7 +17,8 @@ depends=('ca-certificates' 'brotli' 'libbrotlidec.so' 'krb5' 'libgssapi_krb5.so'
'libidn2' 'libidn2.so' 'libnghttp2' 'libpsl' 'libpsl.so' 'libssh2' 'libssh2.so'
'openssl' 'zlib')
provides=('libcurl.so')
source=("https://curl.haxx.se/download/${pkgname}-${pkgver}.tar.gz"{,.asc})
source=("https://curl.haxx.se/download/${pkgname}-${pkgver}.tar.gz"{,.asc}
'0001-select-do-not-return-fatal-error-on-EINTR-from-poll.patch')
_configure_options=(
--prefix='/usr'
@ -36,6 +37,13 @@ _configure_options=(
--with-ca-bundle='/etc/ssl/certs/ca-certificates.crt'
)
prepare() {
cd "${srcdir}/${pkgbase}-${pkgver}"
patch -Np1 < ../0001-select-do-not-return-fatal-error-on-EINTR-from-poll.patch
}
build() {
mkdir build-curl{,-compat,-gnutls}
@ -124,4 +132,5 @@ license=('MIT')
validpgpkeys=('27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2') # Daniel Stenberg
sha256sums=(3c6893d38d054d4e378267166858698899e9d87258e8ff1419d020c395384535 # curl-7.84.0.tar.gz
68c7f4ff72aaceb2a3d2bb6790f66af081a33172f915de1ba2e26d46b63eb71d) # curl-7.84.0.tar.gz.asc
68c7f4ff72aaceb2a3d2bb6790f66af081a33172f915de1ba2e26d46b63eb71d # curl-7.84.0.tar.gz.asc
cd176e20077f5a91008f5acbbe39631caf0c0feb9d595fcf966b1f5ae7f777a8) # 0001-select-do-not-return-fatal-error-on-EINTR-from-poll.patch

View File

@ -7,7 +7,7 @@
pkgbase=curl
pkgname=(curl libcurl-compat libcurl-gnutls)
pkgver=7.84.0
pkgrel=1
pkgrel=2
pkgdesc='An URL retrieval utility and library'
arch=('x86_64')
url='https://curl.haxx.se'
@ -17,9 +17,11 @@ depends=('ca-certificates' 'brotli' 'libbrotlidec.so' 'krb5' 'libgssapi_krb5.so'
'libidn2' 'libidn2.so' 'libnghttp2' 'libpsl' 'libpsl.so' 'libssh2' 'libssh2.so'
'openssl' 'zlib' 'zstd' 'libzstd.so')
provides=('libcurl.so')
source=("https://curl.haxx.se/download/${pkgname}-${pkgver}.tar.gz"{,.asc})
source=("https://curl.haxx.se/download/${pkgname}-${pkgver}.tar.gz"{,.asc}
'0001-select-do-not-return-fatal-error-on-EINTR-from-poll.patch')
sha512sums=('8133baf48dfd93531ce0a226b54cb153fd58bb0c1ffe8159cee0c0aa23ce210192c572e8ee01f3d75a87b609a580e76929df1e66635be59c177b0cb8076043b2'
'SKIP')
'SKIP'
'3d771caae23f4b602e57788c61d3f4eaccbd3a73e7256ef7dc2699e574554246280afde1f9eac10c54a498aa0d25de6e696ea36f65389e45ec8ec9abcb3bfb88')
validpgpkeys=('27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2') # Daniel Stenberg
_configure_options=(
@ -37,6 +39,12 @@ _configure_options=(
--with-ca-bundle='/etc/ssl/certs/ca-certificates.crt'
)
prepare() {
cd "${srcdir}/${pkgbase}-${pkgver}"
patch -Np1 < ../0001-select-do-not-return-fatal-error-on-EINTR-from-poll.patch
}
build() {
mkdir build-curl{,-compat,-gnutls}