Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Factorize fetch error check by testing size after the fetch loop
Baptiste Daroussin committed 13 years ago
commit d461824ef988148336636a6de191b16c2a22d4cd
parent 550dd74f7ee88713a67744685f36d59c6a833b8c
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;