Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Factorize fetch error check by testing size after the fetch loop
Baptiste Daroussin committed 13 years ago
commit d461824ef988148336636a6de191b16c2a22d4cd
parent 550dd74
1 file changed +8 -5
modified libpkg/fetch.c
@@ -335,11 +335,8 @@ pkg_fetch_file_to_fd(struct pkg_fetch *f, const char *url, int dest, time_t *t)
				break;
		} else {
			kevent(kq, &e, 1, &ev, 1, NULL);
-
			if (ev.data == 0) {
-
				pkg_emit_error("An error occured while fetching package");
-
				retcode = EPKG_FATAL;
-
				goto cleanup;
-
			}
+
			if (ev.data == 0)
+
				break;
			size_t size = (size_t)ev.data;
			if (size > sizeof(buf))
				size = sizeof(buf);
@@ -362,6 +359,12 @@ pkg_fetch_file_to_fd(struct pkg_fetch *f, const char *url, int dest, time_t *t)
		}
	}

+
	if (done < sz) {
+
		pkg_emit_error("An error occured while fetching package");
+
		retcode = EPKG_FATAL;
+
		goto cleanup;
+
	}
+

	if (strcmp(u->scheme, "ssh") != 0 && ferror(remote)) {
		pkg_emit_error("%s: %s", url, fetchLastErrString);
		retcode = EPKG_FATAL;