# HG changeset patch # User Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com> # Date 1631604183 -7200 # Node ID 8029d7368b5afb6ca71230e97e650253f8f3c213 # Parent eb7ecfbb48f24e809f7a5eec2246412a66cd0df2 Make sure the download stream isn't closed twice diff --git a/src/main/java/org/monetdb/mcl/net/MapiSocket.java b/src/main/java/org/monetdb/mcl/net/MapiSocket.java --- 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(); }