# 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();
 		}