summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/filetransfer/Uploader.java
diff options
context:
space:
mode:
authorBjörn Hagemeister2014-07-10 14:09:16 +0200
committerBjörn Hagemeister2014-07-10 14:09:16 +0200
commit2c0f86d04457526375062eeb4a495bd9ac864bd7 (patch)
tree7a5f5587827da73e824eb6b5bc09b8b996b1c799 /src/main/java/org/openslx/filetransfer/Uploader.java
parentServeral changes, made hex code for recongnizing what to do as member. (diff)
downloadmaster-sync-shared-2c0f86d04457526375062eeb4a495bd9ac864bd7.tar.gz
master-sync-shared-2c0f86d04457526375062eeb4a495bd9ac864bd7.tar.xz
master-sync-shared-2c0f86d04457526375062eeb4a495bd9ac864bd7.zip
Fixed handling with constant byte[] - length while reading and writing from/to socket.
Plus startet implementing correct Exception handling.
Diffstat (limited to 'src/main/java/org/openslx/filetransfer/Uploader.java')
-rw-r--r--src/main/java/org/openslx/filetransfer/Uploader.java24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/main/java/org/openslx/filetransfer/Uploader.java b/src/main/java/org/openslx/filetransfer/Uploader.java
index 84e48e7..26f8879 100644
--- a/src/main/java/org/openslx/filetransfer/Uploader.java
+++ b/src/main/java/org/openslx/filetransfer/Uploader.java
@@ -5,6 +5,7 @@ import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
+import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets;
import java.security.KeyManagementException;
@@ -16,6 +17,8 @@ import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
+import org.apache.log4j.Logger;
+
public class Uploader
{
// Some member variables.
@@ -27,6 +30,8 @@ public class Uploader
private String RANGE = null;
private String ERROR = null;
+ private static Logger log = Logger.getLogger( Uploader.class );
+
/***********************************************************************/
/**
* Constructor for satellite uploader.
@@ -92,6 +97,7 @@ public class Uploader
dataToServer.write( data );
} catch ( IOException e ) {
e.printStackTrace();
+
return false;
}
return true;
@@ -202,7 +208,7 @@ public class Uploader
// First get length.
dataFromServer.read( incoming, 0, 1 );
- int length = incoming[0];
+ int length = incoming[0] & 0xFF;
// System.out.println("length: " + length);
if ( length == 0 ) // Stop if 0 was read.
@@ -245,7 +251,12 @@ public class Uploader
return false;
}
}
- } catch ( IOException e ) {
+ } catch (SocketTimeoutException ste) {
+ ste.printStackTrace();
+ sendErrorCode("timeout");
+ log.info( "Socket Timeout occured in Downloader." );
+ this.close();
+ } catch ( Exception e ) {
e.printStackTrace();
return false;
}
@@ -274,7 +285,7 @@ public class Uploader
int length = getDiffOfRange();
System.out.println( "diff of Range: " + length );
while ( hasRead < length ) {
- int ret = file.read( data, hasRead, length - hasRead );
+ int ret = file.read( data, 0, Math.min( length - hasRead, data.length ) );
if ( ret == -1 ) {
System.out.println( "Error occured in Uploader.sendFile(),"
+ " while reading from File to send." );
@@ -282,10 +293,10 @@ public class Uploader
return false;
}
hasRead += ret;
+ dataToServer.write( data, 0, ret );
}
file.close();
- dataToServer.write( data, 0, length );
} catch ( Exception e ) {
e.printStackTrace();
return false;
@@ -308,6 +319,7 @@ public class Uploader
dataToServer.write( data );
} catch ( IOException e ) {
e.printStackTrace();
+ this.close();
return false;
}
return true;
@@ -315,13 +327,15 @@ public class Uploader
/***********************************************************************/
/**
- * Method for closing connection, if download has finished.
+ * Method for closing connection, if upload has finished.
*
*/
public void close()
{
try {
this.satelliteSocket.close();
+ if (dataFromServer != null) dataFromServer.close();
+ if (dataToServer != null) dataToServer.close();
} catch ( IOException e ) {
e.printStackTrace();
}