diff options
Diffstat (limited to 'src/com/isode/stroke/filetransfer/SOCKS5BytestreamClientSession.java')
-rw-r--r-- | src/com/isode/stroke/filetransfer/SOCKS5BytestreamClientSession.java | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/com/isode/stroke/filetransfer/SOCKS5BytestreamClientSession.java b/src/com/isode/stroke/filetransfer/SOCKS5BytestreamClientSession.java index 3e51b5f..18e4484 100644 --- a/src/com/isode/stroke/filetransfer/SOCKS5BytestreamClientSession.java +++ b/src/com/isode/stroke/filetransfer/SOCKS5BytestreamClientSession.java @@ -55,7 +55,7 @@ public class SOCKS5BytestreamClientSession extends SOCKS5AbstractBytestreamSessi private State state; - private ByteArray unprocessedData; + private final ByteArray unprocessedData = new ByteArray(); private ByteArray authenticateAddress; private int chunkSize; @@ -227,12 +227,9 @@ public class SOCKS5BytestreamClientSession extends SOCKS5AbstractBytestreamSessi private void authenticate() { logger_.fine("\n"); - SafeByteArray header = new SafeByteArray(new byte[]{0x05, 0x01, 0x00, 0x03}); - SafeByteArray message = header; - String destinationlength = Integer.toString(destination.length()); - message.append(new SafeByteArray(destinationlength)); - authenticateAddress = new ByteArray(destination); - message.append(authenticateAddress); + SafeByteArray message = new SafeByteArray(new byte[]{0x05, 0x01, 0x00, 0x03}); + message.append((byte)destination.length()); + message.append(destination); message.append(new SafeByteArray(new byte[]{0x00, 0x00})); // 2 byte for port connection.write(message); state = State.Authenticating; @@ -324,7 +321,9 @@ public class SOCKS5BytestreamClientSession extends SOCKS5AbstractBytestreamSessi private void closeConnection() { connectFinishedConnection.disconnect(); - dataWrittenConnection.disconnect(); + if (dataWrittenConnection != null) { + dataWrittenConnection.disconnect(); + } dataReadConnection.disconnect(); disconnectedConnection.disconnect(); connection.disconnect(); |