From eda462e04152b1d8847a4471e2d185df7bb36a38 Mon Sep 17 00:00:00 2001
From: Andreas Romeyke <andreas.romeyke@slub-dresden.de>
Date: Tue, 27 Nov 2018 13:27:58 +0100
Subject: [PATCH] - fixed order of "connect" and parameter settings for sockets
 - more detailled logging output

---
 .../metadata_SLUBVirusCheckClamAVPlugin.xml    |  2 +-
 .../plugin/SLUBVirusCheckClamAVPlugin.java     | 18 ++++++++++++------
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/PLUGIN-INF/metadata_SLUBVirusCheckClamAVPlugin.xml b/PLUGIN-INF/metadata_SLUBVirusCheckClamAVPlugin.xml
index f6cdc3e..9a9891b 100644
--- a/PLUGIN-INF/metadata_SLUBVirusCheckClamAVPlugin.xml
+++ b/PLUGIN-INF/metadata_SLUBVirusCheckClamAVPlugin.xml
@@ -49,7 +49,7 @@
 		</fr:x_form>
 	</pl:initParameters>
 	<pl:description>SLUB Virus Check Plugin using installed ClamAV daemon via tcp-sockets</pl:description>
-	<pl:version>1.6</pl:version>
+	<pl:version>1.9</pl:version>
 	<pl:materialType>DIGITAL</pl:materialType>
 	<pl:module>Repository</pl:module>
 	<pl:generalType>TASK</pl:generalType>
diff --git a/java/org/slub/rosetta/dps/repository/plugin/SLUBVirusCheckClamAVPlugin.java b/java/org/slub/rosetta/dps/repository/plugin/SLUBVirusCheckClamAVPlugin.java
index d8f569f..2c04872 100644
--- a/java/org/slub/rosetta/dps/repository/plugin/SLUBVirusCheckClamAVPlugin.java
+++ b/java/org/slub/rosetta/dps/repository/plugin/SLUBVirusCheckClamAVPlugin.java
@@ -1,5 +1,5 @@
 /* 
-2014 by Andreas Romeyke (SLUB Dresden)
+2014-2018 by Andreas Romeyke (SLUB Dresden)
 
 The code is partially based on https://code.google.com/p/clamavj/source/browse/trunk/src/main/java/com/philvarner/clamavj/ClamScan.java?r=2
  https://github.com/vrtadmin/clamav-devel/blob/master/clamdscan/client.c and 
@@ -51,7 +51,7 @@ import java.util.Map;
  */
 public class SLUBVirusCheckClamAVPlugin implements VirusCheckPlugin {
     //private static final ExLogger log = ExLogger.getExLogger(SLUBVirusCheckClamAVPlugin.class);
-    private static final int DEFAULT_CHUNK_SIZE = 2048;
+    private static final int DEFAULT_CHUNK_SIZE = 4096;
     private static final byte[] INSTREAM = "zINSTREAM\0".getBytes();
     private static final byte[] VERSION = "zVERSION\0".getBytes();
     private static final String RESPONSEOK = "stream: OK";
@@ -178,8 +178,6 @@ public class SLUBVirusCheckClamAVPlugin implements VirusCheckPlugin {
     private Socket openSocket() throws IOException {
         // create a socket
         Socket socket = new Socket();
-        //socket.connect( new InetSocketAddress(getHost()));
-        socket.connect(new InetSocketAddress(getHost(), getPort()));
         try {
             socket.setSoTimeout(getTimeOut());
         } catch (SocketException e) {
@@ -196,6 +194,15 @@ public class SLUBVirusCheckClamAVPlugin implements VirusCheckPlugin {
         } catch (SocketException e) {
             log.error( "Could not set ReUseAddress", e);
         }
+        //socket.connect( new InetSocketAddress(getHost()));
+        socket.connect(new InetSocketAddress(getHost(), getPort()));
+        try {
+            log.debug( "socket has timeout of: " + socket.getSoTimeout() + " ms");
+            log.debug( "socket has keepalive set: " + socket.getKeepAlive());
+            log.debug( "socket has reuse adress set: " + socket.getReuseAddress());
+        } catch (SocketException e) {
+            log.warn( "Problems to get socket parameters after connect", e);
+        }
         return socket;
     }
 
@@ -208,7 +215,7 @@ public class SLUBVirusCheckClamAVPlugin implements VirusCheckPlugin {
         if (dos != null) try {
             dos.close();
         } catch (IOException e) {
-            log.error("exception closing DOS", e);
+            log.error("exception closing DataOutputStream", e);
             //System.out.println("exception closing DOS " + e);
         }
         try {
@@ -342,4 +349,3 @@ public class SLUBVirusCheckClamAVPlugin implements VirusCheckPlugin {
     }
 }
 
-
-- 
GitLab