Browse Source

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>
stable-5.1
Jonathan Tan 6 years ago
parent
commit
7e7b00f1a5
  1. 4
      org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java
  2. 6
      org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java

4
org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java

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

6
org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java

@ -1083,9 +1083,13 @@ public class UploadPack {
? db.getRefDatabase().getRefsByPrefix(R_TAGS) ? db.getRefDatabase().getRefsByPrefix(R_TAGS)
: null, : null,
unshallowCommits); 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();
} }
}
/* /*
* Returns true if this is the last command and we should tear down the * Returns true if this is the last command and we should tear down the

Loading…
Cancel
Save