Do not requeue state vector in stateless RPC fetch

If the no-done capability was enabled on the connection, don't
queue up the state vector again once the ACK %s ready message
is observed from the remote. The pack will be following in this
response stream, so the state vector is no longer required.

Change-Id: I7bd1e76957cb58c7ff1cdaeef227f1b02a7e5d24
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
Shawn O. Pearce 2011-09-14 10:53:14 -07:00
parent 575a80ac44
commit 38b3816d65
1 changed files with 3 additions and 1 deletions

View File

@ -455,7 +455,7 @@ private void negotiate(final ProgressMonitor monitor) throws IOException,
state.writeTo(out, null);
negotiateBegin();
SEND_HAVES: while (!receivedReady) {
SEND_HAVES: for (;;) {
final RevCommit c = walk.next();
if (c == null)
break SEND_HAVES;
@ -530,6 +530,8 @@ private void negotiate(final ProgressMonitor monitor) throws IOException,
throw new CancelledException();
}
if (noDone & receivedReady)
break SEND_HAVES;
if (statelessRPC)
state.writeTo(out, null);