summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/io/StreamCopyThread.java18
1 files changed, 16 insertions, 2 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/StreamCopyThread.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/StreamCopyThread.java
index 50f42ad4fc..bf47d199af 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/io/StreamCopyThread.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/io/StreamCopyThread.java
@@ -100,11 +100,25 @@ public class StreamCopyThread extends Thread {
try {
n = src.read(buf);
} catch (InterruptedIOException wakey) {
- continue;
+ if (flushCounter.get() > 0)
+ continue;
+ else
+ throw wakey;
}
if (n < 0)
break;
- dst.write(buf, 0, n);
+
+ for (;;) {
+ try {
+ dst.write(buf, 0, n);
+ } catch (InterruptedIOException wakey) {
+ if (flushCounter.get() > 0)
+ continue;
+ else
+ throw wakey;
+ }
+ break;
+ }
} catch (IOException e) {
break;
}