diff options
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/util/io/StreamCopyThread.java | 18 |
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; } |