From nobody Mon Jun 29 15:54:18 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4gprSB6V7Bz6jNqL for ; Mon, 29 Jun 2026 15:54:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gprSB3wk1z3QJ4 for ; Mon, 29 Jun 2026 15:54:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1782748458; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=V6DaTvwe32oKM+00HczdZN1suMBgkt6mEFRlYLjHFnU=; b=XXN04nU77idxGHs2yNIg5lg6WFj9EADjYaYPkEI13C/HdV/1+uXVpSwDFFCGAJiSdIWp5X J+Iz5cWT1BytcLwGLzkYauoJY34whHGwpKvFyfPUXJi/bq6PoYzTQlOdTN9edjjRAyRvbv LP4bCkBsyHDxMWkInOh1HRXHDlsah+9k1QXHX5hw28JK/itJgMA7liYho1pwYRvFqz0dii Kr/7WHMwOX5hPgyvJzhzjKgFfNMenyR17U7UuJP0Ca7g6qSb1iuuMeuLO8t+ltQwZ53H3F tsJuM5/niKGmypatJau8mXHoPrI8oLCNF5LSA/BOaKZp98uuU5OuW8UahA9MGg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1782748458; a=rsa-sha256; cv=none; b=uc/ZMlYyuDvlqSLcdoYdBQFSoyeu1+n4wsGdDYmPx6HVyXVdEq8vxrlob+lrAHmP5Xz0Qk OlY17XTKJPen6J90c6u/SeOYbSS7WPulEycrRBQCN5unaPtBSs8O9/yHqO1BUJa09Kdmg+ fdejtgjEKGN0pDkmErv53sZDSt72oswxpx1LHz+okgYgXrYmGIcDqc9JLRS3BVEPpmU2aw 1IT5IlgfNNh+XC2zHhihhEkr7G5t85N9mT2o24pzCn1zrDwiaIH+6i58CSY/ZuVXiAL8Hk PvoqdH00PHnPW22oALdXxnSr5o+nenTEDDXBjA88/yAHBKwJD038rIqcfwieJA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1782748458; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=V6DaTvwe32oKM+00HczdZN1suMBgkt6mEFRlYLjHFnU=; b=sBF05bHKTF3kkgMB+2dgtglpMvsT9WJD9JjUeftKTBTw2JzCCV9Ulqi502mQaFyI+SNhGM KF++Ix247LWjs+nKa9QlNIU2eROTrVXSJM4z+EhJeVG9K6Kh5bxjX/lK4pDxuxMvaN6Kj5 /vrIoFDkXivtHlV/dEyk/Cx9Rd9JfD0UxeZlknwEDi7N0EWYrTpPhOvSZJVDlGJd3bcpzx KzEo2Q+7rAU7zbbvP53XgWzddWR0dTmPodkVVJrplwUhgPJqH8MXIEvQz7nTVreLYtzyqT q0viP1awLGF4iQpeQesUdDvP+eTvLpRBeKG2sG0CR9QEs96sjN6Q3p6Lox2FsQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gprSB22yyz146Q for ; Mon, 29 Jun 2026 15:54:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3ac53 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 29 Jun 2026 15:54:18 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling=?utf-8?Q? Sm=C3=B8rg?=rav Subject: git: 1b5f832e268f - main - Revert "fetch: Stop setting an alarm" List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1b5f832e268f1f1092d0ebfc3bab4a7228aae20b Auto-Submitted: auto-generated Date: Mon, 29 Jun 2026 15:54:18 +0000 Message-Id: <6a42952a.3ac53.7a88d284@gitrepo.freebsd.org> The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=1b5f832e268f1f1092d0ebfc3bab4a7228aae20b commit 1b5f832e268f1f1092d0ebfc3bab4a7228aae20b Author: Dag-Erling Smørgrav AuthorDate: 2026-06-29 15:53:53 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2026-06-29 15:53:53 +0000 Revert "fetch: Stop setting an alarm" This reverts commit 23380f3e6ac9334e85489f92f7f20b700ede3368. --- usr.bin/fetch/fetch.1 | 10 ++++------ usr.bin/fetch/fetch.c | 33 ++++++++++++++++++++++++--------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/usr.bin/fetch/fetch.1 b/usr.bin/fetch/fetch.1 index 17b96d8d459b..7238226998fc 100644 --- a/usr.bin/fetch/fetch.1 +++ b/usr.bin/fetch/fetch.1 @@ -28,7 +28,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd June 27, 2026 +.Dd October 7, 2023 .Dt FETCH 1 .Os .Sh NAME @@ -283,7 +283,7 @@ ignored and the file is fetched unconditionally. .It Fl s , -print-size Print the size in bytes of each requested file, without fetching it. .It Fl T Ar seconds , Fl -timeout= Ns Ar seconds -Set the network timeout to +Set timeout value to .Ar seconds . Overrides the environment variables .Ev FTP_TIMEOUT @@ -322,11 +322,9 @@ message. .Sh ENVIRONMENT .Bl -tag -width HTTP_TIMEOUT .It Ev FTP_TIMEOUT -Maximum time, in seconds, to wait before giving up on a stalled FTP -transfer. +Maximum time, in seconds, to wait before aborting an FTP connection. .It Ev HTTP_TIMEOUT -Maximum time, in seconds, to wait before giving up on a stalled HTTP -transfer. +Maximum time, in seconds, to wait before aborting an HTTP connection. .El .Pp See diff --git a/usr.bin/fetch/fetch.c b/usr.bin/fetch/fetch.c index 4e2a7596e796..5e4b14289ca7 100644 --- a/usr.bin/fetch/fetch.c +++ b/usr.bin/fetch/fetch.c @@ -87,6 +87,7 @@ static pid_t pgrp; /* our process group */ static long w_secs; /* -w: retry delay */ static int family = PF_UNSPEC; /* -[46]: address family to use */ +static int sigalrm; /* SIGALRM received */ static int siginfo; /* SIGINFO received */ static int sigint; /* SIGINT received */ @@ -172,6 +173,9 @@ static void sig_handler(int sig) { switch (sig) { + case SIGALRM: + sigalrm = 1; + break; case SIGINFO: siginfo = 1; break; @@ -432,7 +436,6 @@ fetch(char *URL, const char *path, int *is_http) char *tmppath; int r, tries; unsigned timeout; - int timedout = 0; char *ptr; f = of = NULL; @@ -516,7 +519,13 @@ fetch(char *URL, const char *path, int *is_http) /* just print size */ if (s_flag) { + if (timeout) + alarm(timeout); r = fetchStat(url, &us, flags); + if (timeout) + alarm(0); + if (sigalrm || sigint) + goto signal; if (r == -1) { warnx("%s", fetchLastErrString); goto failure; @@ -565,7 +574,13 @@ again: size_prev = sb.st_size; /* start the transfer */ + if (timeout) + alarm(timeout); f = fetchXGet(url, &us, flags); + if (timeout) + alarm(0); + if (sigalrm || sigint) + goto signal; if (f == NULL) { if (i_flag && *is_http && fetchLastErrCode == FETCH_OK && strcmp(fetchLastErrString, "Not Modified") == 0) { @@ -733,7 +748,7 @@ again: /* start the counter */ stat_start(&xs, path, us.size, count); - siginfo = sigint = 0; + sigalrm = siginfo = sigint = 0; /* suck in the data */ setvbuf(f, NULL, _IOFBF, B_size); @@ -770,7 +785,8 @@ again: if (readcnt != 0) break; } - timedout = ferror(f) && errno == ETIMEDOUT; + if (!sigalrm) + sigalrm = ferror(f) && errno == ETIMEDOUT; signal(SIGINFO, SIG_DFL); stat_end(&xs); @@ -795,20 +811,18 @@ again: } /* timed out or interrupted? */ - if (timedout) { + if (sigalrm) warnx("transfer timed out"); - goto failure; - } if (sigint) { warnx("transfer interrupted"); goto failure; } - /* timeout / interrupt before connection completely established? */ + /* timeout / interrupt before connection completley established? */ if (f == NULL) goto failure; - if (!timedout) { + if (!sigalrm) { /* check the status of our files */ if (ferror(f)) warn("%s", URL); @@ -836,7 +850,7 @@ again: * If the transfer timed out and we didn't know how much to * expect, assume the worst (i.e. we didn't get all of it) */ - if (timedout && us.size == -1) { + if (sigalrm && us.size == -1) { warnx("%s may be truncated", path); goto failure_keep; } @@ -1112,6 +1126,7 @@ main(int argc, char *argv[]) sa.sa_flags = 0; sa.sa_handler = sig_handler; sigemptyset(&sa.sa_mask); + sigaction(SIGALRM, &sa, NULL); sa.sa_flags = SA_RESETHAND; sigaction(SIGINT, &sa, NULL); fetchRestartCalls = 0;