From 557471da2eee6752ad4305a883843bcdc8d66536 Mon Sep 17 00:00:00 2001 From: Shawn Pearce Date: Thu, 23 May 2013 13:07:03 -0700 Subject: [PATCH] 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 --- .../src/org/eclipse/jgit/transport/UploadPack.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java index 6ae08acaa..21530cca9 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java @@ -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 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 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();