Mercurial > hg > monetdb-java
changeset 547:8029d7368b5a onclient
Make sure the download stream isn't closed twice
author | Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com> |
---|---|
date | Tue, 14 Sep 2021 09:23:03 +0200 (2021-09-14) |
parents | eb7ecfbb48f2 |
children | d1f6678f92c5 |
files | src/main/java/org/monetdb/mcl/net/MapiSocket.java |
diffstat | 1 files changed, 5 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/org/monetdb/mcl/net/MapiSocket.java +++ b/src/main/java/org/monetdb/mcl/net/MapiSocket.java @@ -1366,6 +1366,7 @@ public class MapiSocket { /* cannot (yet private final BlockInputStream.Raw rawIn; private final OutputStream out; private boolean endBlockSeen = false; + private boolean closed = false; DownloadStream(BlockInputStream.Raw rawIn, OutputStream out) { this.rawIn = rawIn; @@ -1373,7 +1374,7 @@ public class MapiSocket { /* cannot (yet } void nextBlock() throws IOException { - if (endBlockSeen) + if (endBlockSeen || closed) return; int ret = rawIn.readBlock(); if (ret < 0 || rawIn.wasEndBlock()) { @@ -1383,13 +1384,15 @@ public class MapiSocket { /* cannot (yet @Override public void close() throws IOException { + if (closed) + return; + closed = true; while (!endBlockSeen) { nextBlock(); } // Send acknowledgement to server out.write('\n'); out.flush(); - // And await the acknowledgement of the acknowledgement // Do whatever super has to do super.close(); }