Send only 1 flush pkt at the end of v2 fetch

When processing a fetch using protocol v2, UploadPack#fetchV2 sends an
extraneous flush pkt when also sending a packfile (#sendPack sending its
own flush pkt). Update that method to only send the flush pkt if the
packfile is not being sent.

Change-Id: I7117a264bccd2d7f3a048645fcb8425a9d78d526
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
This commit is contained in:
Jonathan Tan 2018-07-24 15:35:16 -07:00
parent 280707b0fc
commit 7e7b00f1a5
2 changed files with 9 additions and 1 deletions

View File

@ -658,6 +658,10 @@ private ReceivedPackStatistics parsePack(ByteArrayInputStream recvStream, Progre
new StringWriter(), NullOutputStream.INSTANCE);
PackParser pp = client.newObjectInserter().newPackParser(sb);
pp.parse(NullProgressMonitor.INSTANCE);
// Ensure that there is nothing left in the stream.
assertThat(recvStream.read(), is(-1));
return pp.getReceivedPackStatistics();
}

View File

@ -1083,8 +1083,12 @@ private void fetchV2() throws IOException {
? db.getRefDatabase().getRefsByPrefix(R_TAGS)
: null,
unshallowCommits);
// sendPack invokes pckOut.end() for us, so we do not
// need to invoke it here.
} else {
// Invoke pckOut.end() by ourselves.
pckOut.end();
}
pckOut.end();
}
/*