aboutsummaryrefslogtreecommitdiff
path: root/lib/libfetch
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2026-02-21 01:18:15 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2026-02-21 01:18:15 +0000
commitafbdcd402bb439bd3d487baaad63b68e95929265 (patch)
tree1051bdf3805829e2d051b5d7dc796c17d8867f25 /lib/libfetch
parent1b7c4d29fdfc975facdc43f6da50947cf3bb8e4a (diff)
Diffstat (limited to 'lib/libfetch')
-rw-r--r--lib/libfetch/common.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/libfetch/common.c b/lib/libfetch/common.c
index 825b1960208c..b3250940becc 100644
--- a/lib/libfetch/common.c
+++ b/lib/libfetch/common.c
@@ -651,7 +651,13 @@ fetch_connect(const char *host, int port, int af, int verbose)
goto syserr;
}
/* attempt to connect to server address */
- if ((err = connect(sd, sai->ai_addr, sai->ai_addrlen)) == 0)
+ while ((err = connect(sd, sai->ai_addr, sai->ai_addrlen)) < 0) {
+ if (errno == EINTR && fetchRestartCalls)
+ continue;
+ break;
+ }
+ /* success? */
+ if (err == 0)
break;
/* clean up before next attempt */
close(sd);