|
|
|
@ -719,7 +719,7 @@ public class UploadPack {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void service() throws IOException { |
|
|
|
|
boolean sendPack; |
|
|
|
|
boolean sendPack = false; |
|
|
|
|
// If it's a non-bidi request, we need to read the entire request before
|
|
|
|
|
// writing a response. Buffer the response until then.
|
|
|
|
|
try { |
|
|
|
@ -752,6 +752,17 @@ public class UploadPack {
|
|
|
|
|
if (!clientShallowCommits.isEmpty()) |
|
|
|
|
walk.assumeShallow(clientShallowCommits); |
|
|
|
|
sendPack = negotiate(); |
|
|
|
|
if (sendPack && !biDirectionalPipe) { |
|
|
|
|
// Ensure the request was fully consumed. Any remaining input must
|
|
|
|
|
// be a protocol error. If we aren't at EOF the implementation is broken.
|
|
|
|
|
int eof = rawIn.read(); |
|
|
|
|
if (0 <= eof) { |
|
|
|
|
sendPack = false; |
|
|
|
|
throw new CorruptObjectException(MessageFormat.format( |
|
|
|
|
JGitText.get().expectedEOFReceived, |
|
|
|
|
"\\x" + Integer.toHexString(eof))); //$NON-NLS-1$
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} catch (ServiceMayNotContinueException err) { |
|
|
|
|
if (!err.isOutput() && err.getMessage() != null) { |
|
|
|
|
try { |
|
|
|
@ -778,6 +789,11 @@ public class UploadPack {
|
|
|
|
|
} |
|
|
|
|
throw err; |
|
|
|
|
} finally { |
|
|
|
|
if (!sendPack && !biDirectionalPipe) { |
|
|
|
|
while (0 < rawIn.skip(2048) || 0 <= rawIn.read()) { |
|
|
|
|
// Discard until EOF.
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
rawOut.stopBuffering(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -1390,17 +1406,6 @@ public class UploadPack {
|
|
|
|
|
private void sendPack() throws IOException { |
|
|
|
|
final boolean sideband = options.contains(OPTION_SIDE_BAND) |
|
|
|
|
|| options.contains(OPTION_SIDE_BAND_64K); |
|
|
|
|
|
|
|
|
|
if (!biDirectionalPipe) { |
|
|
|
|
// Ensure the request was fully consumed. Any remaining input must
|
|
|
|
|
// be a protocol error. If we aren't at EOF the implementation is broken.
|
|
|
|
|
int eof = rawIn.read(); |
|
|
|
|
if (0 <= eof) |
|
|
|
|
throw new CorruptObjectException(MessageFormat.format( |
|
|
|
|
JGitText.get().expectedEOFReceived, |
|
|
|
|
"\\x" + Integer.toHexString(eof))); //$NON-NLS-1$
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (sideband) { |
|
|
|
|
try { |
|
|
|
|
sendPack(true); |
|
|
|
|