Use NullOutputStream not DisabledOutputStream in UploadPack

The stream should not throw IllegalStateException if it is off.
Flush the stream after the hook runs, in case any messages need
to be sent ahead of the pack.

Change-Id: I21c7a0258ab1308406d226293fa0e7da69b4f57b
This commit is contained in:
Shawn Pearce 2013-05-23 13:07:03 -07:00
parent 6e896ba66b
commit 557471da2e
1 changed files with 5 additions and 3 deletions

View File

@ -82,6 +82,7 @@
import org.eclipse.jgit.transport.RefAdvertiser.PacketLineOutRefAdvertiser;
import org.eclipse.jgit.util.io.DisabledOutputStream;
import org.eclipse.jgit.util.io.InterruptTimer;
import org.eclipse.jgit.util.io.NullOutputStream;
import org.eclipse.jgit.util.io.TimeoutInputStream;
import org.eclipse.jgit.util.io.TimeoutOutputStream;
@ -193,7 +194,7 @@ public Set<String> getOptions() {
private PacketLineOut pckOut;
private OutputStream msgOut = DisabledOutputStream.INSTANCE;
private OutputStream msgOut = NullOutputStream.INSTANCE;
/** The refs we advertised as existing at the start of the connection. */
private Map<String, Ref> refs;
@ -525,7 +526,7 @@ public void upload(final InputStream input, final OutputStream output,
pckOut = new PacketLineOut(rawOut);
service();
} finally {
msgOut = DisabledOutputStream.INSTANCE;
msgOut = NullOutputStream.INSTANCE;
walk.release();
if (timer != null) {
try {
@ -1126,6 +1127,7 @@ private void sendPack(final boolean sideband) throws IOException {
} else {
preUploadHook.onSendPack(this, wantAll, commonBase);
}
msgOut.flush();
} catch (ServiceMayNotContinueException noPack) {
if (sideband && noPack.getMessage() != null) {
noPack.setOutput();
@ -1209,7 +1211,7 @@ else if (ref.getName().startsWith(Constants.R_HEADS))
pw.writePack(pm, NullProgressMonitor.INSTANCE, packOut);
statistics = pw.getStatistics();
if (msgOut != DisabledOutputStream.INSTANCE) {
if (msgOut != NullOutputStream.INSTANCE) {
String msg = pw.getStatistics().getMessage() + '\n';
msgOut.write(Constants.encode(msg));
msgOut.flush();