diff --git a/org.spearce.jgit/src/org/spearce/jgit/transport/BasePackConnection.java b/org.spearce.jgit/src/org/spearce/jgit/transport/BasePackConnection.java
index a878f01..7dc4620 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/transport/BasePackConnection.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/transport/BasePackConnection.java
@@ -83,6 +83,9 @@ abstract class BasePackConnection extends BaseConnection {
/** Packet line encoder around {@link #out}. */
protected PacketLineOut pckOut;
+ /** Send {@link PacketLineOut#end()} before closing {@link #out}? */
+ protected boolean outNeedsEnd;
+
/** Capability tokens advertised by the remote side. */
private final Set<String> remoteCapablities = new HashSet<String>();
@@ -99,6 +102,7 @@ abstract class BasePackConnection extends BaseConnection {
pckIn = new PacketLineIn(in);
pckOut = new PacketLineOut(out);
+ outNeedsEnd = true;
}
protected void readAdvertisedRefs() throws TransportException {@@ -195,7 +199,8 @@ abstract class BasePackConnection extends BaseConnection {
public void close() {
if (out != null) {
try {
- pckOut.end();
+ if (outNeedsEnd)
+ pckOut.end();
out.close();
} catch (IOException err) {
// Ignore any close errors.diff --git a/org.spearce.jgit/src/org/spearce/jgit/transport/BasePackFetchConnection.java b/org.spearce.jgit/src/org/spearce/jgit/transport/BasePackFetchConnection.java
index 04a91bf..12b36f2 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/transport/BasePackFetchConnection.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/transport/BasePackFetchConnection.java
@@ -253,6 +253,7 @@ abstract class BasePackFetchConnection extends BasePackConnection implements
pckOut.writeString(line.toString());
}
pckOut.end();
+ outNeedsEnd = false;
return !first;
}
diff --git a/org.spearce.jgit/src/org/spearce/jgit/transport/BasePackPushConnection.java b/org.spearce.jgit/src/org/spearce/jgit/transport/BasePackPushConnection.java
index 784a578..6d95eaf 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/transport/BasePackPushConnection.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/transport/BasePackPushConnection.java
@@ -148,6 +148,7 @@ class BasePackPushConnection extends BasePackConnection implements
if (monitor.isCancelled())
throw new TransportException(uri, "push cancelled");
pckOut.end();
+ outNeedsEnd = false;
}
private String enableCapabilties() {--
1.5.6.74.g8a5e