summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/filetransfer/Transfer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/filetransfer/Transfer.java')
-rw-r--r--src/main/java/org/openslx/filetransfer/Transfer.java44
1 files changed, 36 insertions, 8 deletions
diff --git a/src/main/java/org/openslx/filetransfer/Transfer.java b/src/main/java/org/openslx/filetransfer/Transfer.java
index 589d142..aebd3ce 100644
--- a/src/main/java/org/openslx/filetransfer/Transfer.java
+++ b/src/main/java/org/openslx/filetransfer/Transfer.java
@@ -9,13 +9,14 @@ import java.net.Socket;
import java.net.SocketTimeoutException;
import java.util.HashMap;
import java.util.Map;
+import java.util.Map.Entry;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import net.jpountz.lz4.LZ4Factory;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
import org.openslx.util.Util;
public abstract class Transfer
@@ -23,7 +24,7 @@ public abstract class Transfer
protected final Socket transferSocket;
protected final DataOutputStream outStream;
protected final DataInputStream dataFromServer;
- protected String ERROR = null;
+ private String remoteError;
private boolean shouldGetToken;
protected boolean useCompression = true;
@@ -51,7 +52,7 @@ public abstract class Transfer
transferSocket = sslSocketFactory.createSocket();
}
transferSocket.setSoTimeout( readTimeoutMs );
- transferSocket.connect( new InetSocketAddress( host, port ) );
+ transferSocket.connect( new InetSocketAddress( host, port ), 4000 );
outStream = new DataOutputStream( transferSocket.getOutputStream() );
dataFromServer = new DataInputStream( transferSocket.getInputStream() );
@@ -169,6 +170,7 @@ public abstract class Transfer
*/
protected MetaData readMetaData()
{
+
Map<String, String> entries = new HashMap<>();
try {
while ( true ) {
@@ -183,7 +185,7 @@ public abstract class Transfer
continue;
}
if ( splitted[0].equals( "ERROR" ) )
- ERROR = splitted[1];
+ remoteError = splitted[1];
if ( entries.containsKey( splitted[0] ) ) {
log.warn( "Received meta data key " + splitted[0] + " when already received, ignoring!" );
} else {
@@ -192,10 +194,10 @@ public abstract class Transfer
}
} catch ( SocketTimeoutException ste ) {
sendErrorCode( "timeout" );
- this.close( "Socket Timeout occured in readMetaData. " + ERROR );
+ this.close( "Socket Timeout occured in readMetaData." );
return null;
} catch ( Exception e ) {
- this.close( "Exception occured in readMetaData: " + e.toString() + " " + ERROR );
+ this.close( "Exception occured in readMetaData: " + e.toString() );
return null;
}
return new MetaData( entries );
@@ -219,11 +221,17 @@ public abstract class Transfer
*/
protected void close( String error, UploadStatusCallback callback, boolean sendToPeer )
{
+ close( error, callback, sendToPeer, null );
+ }
+
+ protected void close( String error, UploadStatusCallback callback, boolean sendToPeer, Exception e )
+ {
if ( error != null ) {
if ( sendToPeer )
sendErrorCode( error );
if ( callback != null )
callback.uploadError( error );
+ log.info( "Closing with error '" + error + "'", e );
}
synchronized ( transferSocket ) {
safeClose( dataFromServer, outStream, transferSocket );
@@ -232,7 +240,12 @@ public abstract class Transfer
protected void close( String error )
{
- close( error, null, false );
+ close( error, null );
+ }
+
+ protected void close( String error, Exception e )
+ {
+ close( error, null, false, e );
}
public void cancel()
@@ -272,7 +285,7 @@ public abstract class Transfer
*/
public String getRemoteError()
{
- return ERROR;
+ return remoteError;
}
/**
@@ -406,6 +419,21 @@ public abstract class Transfer
return meta.containsKey( "COMPRESS" );
}
+ @Override
+ public String toString()
+ {
+ StringBuilder sb = new StringBuilder();
+ for ( Entry<String, String> it : meta.entrySet() ) {
+ if ( sb.length() != 0 ) {
+ sb.append( ' ' );
+ }
+ sb.append( it.getKey() );
+ sb.append( '=' );
+ sb.append( it.getValue() );
+ }
+ return sb.toString();
+ }
+
}
}