Commit Diff


commit - 132af4a5fe242aab94fc8049abfb80888c26395f
commit + 98f64f14c3dc52ec6afc00acc53dc9f42399d363
blob - 9d3276731396175a544ea337396a6dad1abbe92e
blob + dd739faa1ee3882e18ce87a0815acc3e0cc8e7c4
--- libexec/got-fetch-pack/got-fetch-pack.c
+++ libexec/got-fetch-pack/got-fetch-pack.c
@@ -991,6 +991,25 @@ fetch_pack(int fd, int packfd, uint8_t *pack_sha1,
 				}
 				err = fetch_error(buf, r);
 				goto done;
+			} else if (buf[0] == 'A') {
+				err = readn(&r, fd, buf, datalen);
+				if (err)
+					goto done;
+				if (r != datalen) {
+					err = got_error_msg(GOT_ERR_BAD_PACKET,
+					    "packet too short");
+					goto done;
+				}
+				/*
+				 * Git server responds with ACK after 'done'
+				 * even though multi_ack is disabled?!?
+				 */
+				buf[r] = '\0';
+				if (strncmp(buf, "CK ", 3) == 0)
+					continue; /* ignore */
+				err = got_error_msg(GOT_ERR_BAD_PACKET,
+				    "unexpected message from server");
+				goto done;
 			} else {
 				err = got_error_msg(GOT_ERR_BAD_PACKET,
 				    "unknown side-band received from server");
blob - 06f040fb232eedbd33669ed3c736c29d8747c09f
blob + 0af6ce58eaded1d0d98284d9acdf7306a7405494
--- regress/cmdline/fetch.sh
+++ regress/cmdline/fetch.sh
@@ -560,7 +560,7 @@ test_fetch_update_tag() {
 		return 1
 	fi
 
-	got fetch -q -r $testroot/repo-clone
+	got fetch -a -q -r $testroot/repo-clone
 	ret="$?"
 	if [ "$ret" != "0" ]; then
 		echo "got fetch command failed unexpectedly" >&2