summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/com')
-rw-r--r--src/com/isode/stroke/elements/JingleS5BTransportPayload.java9
-rw-r--r--src/com/isode/stroke/filetransfer/ByteArrayReadBytestream.java2
-rw-r--r--src/com/isode/stroke/filetransfer/DefaultFileTransferTransporter.java5
-rw-r--r--src/com/isode/stroke/filetransfer/FileReadBytestream.java5
-rw-r--r--src/com/isode/stroke/filetransfer/FileTransferTransporter.java6
-rw-r--r--src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java3
-rw-r--r--src/com/isode/stroke/filetransfer/IncrementalBytestreamHashCalculator.java9
-rw-r--r--src/com/isode/stroke/filetransfer/LocalJingleTransportCandidateGenerator.java26
-rw-r--r--src/com/isode/stroke/filetransfer/RemoteJingleTransportCandidateSelector.java3
-rw-r--r--src/com/isode/stroke/filetransfer/SOCKS5BytestreamClientSession.java4
-rw-r--r--src/com/isode/stroke/filetransfer/SOCKS5BytestreamProxiesManager.java77
-rw-r--r--src/com/isode/stroke/filetransfer/SOCKS5BytestreamServer.java30
-rw-r--r--src/com/isode/stroke/filetransfer/SOCKS5BytestreamServerPortForwardingUser.java2
-rw-r--r--src/com/isode/stroke/filetransfer/SOCKS5BytestreamServerResourceUser.java4
14 files changed, 112 insertions, 73 deletions
diff --git a/src/com/isode/stroke/elements/JingleS5BTransportPayload.java b/src/com/isode/stroke/elements/JingleS5BTransportPayload.java
index 546a41a..5da70e3 100644
--- a/src/com/isode/stroke/elements/JingleS5BTransportPayload.java
+++ b/src/com/isode/stroke/elements/JingleS5BTransportPayload.java
@@ -55,11 +55,2 @@ public class JingleS5BTransportPayload extends JingleTransportPayload {
}
-
- public boolean equals(Object c) {
- if(!(c instanceof JingleS5BTransportPayload.Candidate)) {
- return false;
- }
- else {
- return this.equals(c);
- }
- }
}
diff --git a/src/com/isode/stroke/filetransfer/ByteArrayReadBytestream.java b/src/com/isode/stroke/filetransfer/ByteArrayReadBytestream.java
index 4c3d47d..41528fa 100644
--- a/src/com/isode/stroke/filetransfer/ByteArrayReadBytestream.java
+++ b/src/com/isode/stroke/filetransfer/ByteArrayReadBytestream.java
@@ -32,3 +32,3 @@ public class ByteArrayReadBytestream extends ReadBytestream {
}
- String s = new String(data.getData());
+ String s = data.toString();
s = s.substring(position, position+readSize);
diff --git a/src/com/isode/stroke/filetransfer/DefaultFileTransferTransporter.java b/src/com/isode/stroke/filetransfer/DefaultFileTransferTransporter.java
index f06407e..c14ee86 100644
--- a/src/com/isode/stroke/filetransfer/DefaultFileTransferTransporter.java
+++ b/src/com/isode/stroke/filetransfer/DefaultFileTransferTransporter.java
@@ -71,2 +71,3 @@ public class DefaultFileTransferTransporter extends FileTransferTransporter {
this.s5bRegistry = s5bRegistry;
+ this.s5bServerManager = s5bServerManager;
this.s5bProxy = s5bProxy;
@@ -77,3 +78,3 @@ public class DefaultFileTransferTransporter extends FileTransferTransporter {
s5bProxy,
- (Role.Initiator.equals(role) ? initiator : responder),
+ (role == Role.Initiator ? initiator : responder),
idGenerator,
@@ -134,3 +135,3 @@ public class DefaultFileTransferTransporter extends FileTransferTransporter {
proxyRequest.setSID(s5bSessionID);
- proxyRequest.setActivate(Role.Initiator.equals(role) ? responder : initiator);
+ proxyRequest.setActivate(role == Role.Initiator ? responder : initiator);
diff --git a/src/com/isode/stroke/filetransfer/FileReadBytestream.java b/src/com/isode/stroke/filetransfer/FileReadBytestream.java
index d349c17..53cb974 100644
--- a/src/com/isode/stroke/filetransfer/FileReadBytestream.java
+++ b/src/com/isode/stroke/filetransfer/FileReadBytestream.java
@@ -33,5 +33,6 @@ public class FileReadBytestream extends ReadBytestream {
}
- ByteArray result = new ByteArray();
//assert(stream.good());
- stream.read(result.getData(), 0, size);
+ byte[] buffer = new byte[size];
+ stream.read(buffer, 0, size);
+ ByteArray result = new ByteArray(buffer);
onRead.emit(result);
diff --git a/src/com/isode/stroke/filetransfer/FileTransferTransporter.java b/src/com/isode/stroke/filetransfer/FileTransferTransporter.java
index d20550d..4aea154 100644
--- a/src/com/isode/stroke/filetransfer/FileTransferTransporter.java
+++ b/src/com/isode/stroke/filetransfer/FileTransferTransporter.java
@@ -51,5 +51,5 @@ public abstract class FileTransferTransporter {
- public final Signal3<String /* sessionID */, Vector<JingleS5BTransportPayload.Candidate>, String /* dstAddr */> onLocalCandidatesGenerated = new Signal3<String, Vector<JingleS5BTransportPayload.Candidate>, String>();
- public final Signal2<String /* sessionID */, JingleS5BTransportPayload.Candidate> onRemoteCandidateSelectFinished = new Signal2<String, JingleS5BTransportPayload.Candidate>();
- public final Signal2<String /* sessionID */, ErrorPayload> onProxyActivated = new Signal2<String, ErrorPayload>();
+ public final Signal3<String, Vector<JingleS5BTransportPayload.Candidate>, String> onLocalCandidatesGenerated = new Signal3<String, Vector<JingleS5BTransportPayload.Candidate>, String>();
+ public final Signal2<String, JingleS5BTransportPayload.Candidate> onRemoteCandidateSelectFinished = new Signal2<String, JingleS5BTransportPayload.Candidate>();
+ public final Signal2<String, ErrorPayload> onProxyActivated = new Signal2<String, ErrorPayload>();
} \ No newline at end of file
diff --git a/src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java b/src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java
index c5001e0..92b185d 100644
--- a/src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java
+++ b/src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java
@@ -394,5 +394,4 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In
- JingleIBBTransportPayload ibbTransport;
if (options.isInBandAllowed() && transport instanceof JingleIBBTransportPayload) {
- ibbTransport = (JingleIBBTransportPayload)transport;
+ JingleIBBTransportPayload ibbTransport = (JingleIBBTransportPayload)transport;
logger_.fine("transport replaced with IBB\n");
diff --git a/src/com/isode/stroke/filetransfer/IncrementalBytestreamHashCalculator.java b/src/com/isode/stroke/filetransfer/IncrementalBytestreamHashCalculator.java
index e79a7a5..0b8902e 100644
--- a/src/com/isode/stroke/filetransfer/IncrementalBytestreamHashCalculator.java
+++ b/src/com/isode/stroke/filetransfer/IncrementalBytestreamHashCalculator.java
@@ -44,11 +44,2 @@ public class IncrementalBytestreamHashCalculator {
- /*void feedData(const SafeByteArray& data) {
- if (md5Hasher) {
- md5Hasher.update(createByteArray(data.data(), data.size()));
- }
- if (sha1Hasher) {
- sha1Hasher.update(createByteArray(data.data(), data.size()));
- }
- }*/
-
public ByteArray getSHA1Hash() {
diff --git a/src/com/isode/stroke/filetransfer/LocalJingleTransportCandidateGenerator.java b/src/com/isode/stroke/filetransfer/LocalJingleTransportCandidateGenerator.java
index 1cacda7..3839b26 100644
--- a/src/com/isode/stroke/filetransfer/LocalJingleTransportCandidateGenerator.java
+++ b/src/com/isode/stroke/filetransfer/LocalJingleTransportCandidateGenerator.java
@@ -48,3 +48,8 @@ public class LocalJingleTransportCandidateGenerator {
- public LocalJingleTransportCandidateGenerator(
+ /**
+ * {@link SignalConnection} to {@link #s5bServerResourceUser_.onSuccessfulInitialized}
+ */
+ private SignalConnection onSuccessfulInitializedConnection_;
+
+ public LocalJingleTransportCandidateGenerator(
SOCKS5BytestreamServerManager s5bServerManager,
@@ -72,3 +77,3 @@ public class LocalJingleTransportCandidateGenerator {
else {
- s5bServerResourceUser_.onSuccessfulInitialized.connect(new Slot1<Boolean>() {
+ onSuccessfulInitializedConnection_ = s5bServerResourceUser_.onSuccessfulInitialized.connect(new Slot1<Boolean>() {
@Override
@@ -102,6 +107,6 @@ public class LocalJingleTransportCandidateGenerator {
}
- if (s5bServerResourceUser_ != null) {
- s5bServerResourceUser_.onSuccessfulInitialized.disconnectAll();
- s5bServerResourceUser_ = null;
+ if (onSuccessfulInitializedConnection_ != null) {
+ onSuccessfulInitializedConnection_.disconnect();
}
+ s5bServerResourceUser_ = null;
}
@@ -109,6 +114,6 @@ public class LocalJingleTransportCandidateGenerator {
public Signal1<Vector<JingleS5BTransportPayload.Candidate>> onLocalTransportCandidatesGenerated = new Signal1<Vector<JingleS5BTransportPayload.Candidate>>();
-
+
private void handleS5BServerInitialized(boolean success) {
- if (s5bServerResourceUser_ != null) {
- s5bServerResourceUser_.onSuccessfulInitialized.disconnectAll();
+ if (onSuccessfulInitializedConnection_ != null) {
+ onSuccessfulInitializedConnection_.disconnect();
}
@@ -132,5 +137,2 @@ public class LocalJingleTransportCandidateGenerator {
logger_.warning("Unable to start SOCKS5 server\n");
- if (s5bServerResourceUser_ != null) {
- s5bServerResourceUser_.onSuccessfulInitialized.disconnectAll();
- }
s5bServerResourceUser_ = null;
@@ -183,3 +185,3 @@ public class LocalJingleTransportCandidateGenerator {
if (options_.isAssistedAllowed()) {
- // get assissted candidates
+ // get assisted candidates
Vector<HostAddressPort> assisstedCandidates = s5bServerManager.getAssistedHostAddressPorts();
diff --git a/src/com/isode/stroke/filetransfer/RemoteJingleTransportCandidateSelector.java b/src/com/isode/stroke/filetransfer/RemoteJingleTransportCandidateSelector.java
index 1d1c822..5cbc3ae 100644
--- a/src/com/isode/stroke/filetransfer/RemoteJingleTransportCandidateSelector.java
+++ b/src/com/isode/stroke/filetransfer/RemoteJingleTransportCandidateSelector.java
@@ -77,4 +77,3 @@ public class RemoteJingleTransportCandidateSelector {
else {
- lastCandidate = candidates.peek();
- candidates.poll();
+ lastCandidate = candidates.poll();
logger_.fine("Trying candidate " + lastCandidate.cid + "\n");
diff --git a/src/com/isode/stroke/filetransfer/SOCKS5BytestreamClientSession.java b/src/com/isode/stroke/filetransfer/SOCKS5BytestreamClientSession.java
index 25aadc4..0144bcb 100644
--- a/src/com/isode/stroke/filetransfer/SOCKS5BytestreamClientSession.java
+++ b/src/com/isode/stroke/filetransfer/SOCKS5BytestreamClientSession.java
@@ -48,3 +48,3 @@ public class SOCKS5BytestreamClientSession {
}
- public int description;
+ public final int description;
};
@@ -276,3 +276,3 @@ public class SOCKS5BytestreamClientSession {
else {
- //---------writeBytestream.write(new ByteArray(vecptr(*data), data.size()));
+ writeBytestream.write(data);
//onBytesReceived(data.size());
diff --git a/src/com/isode/stroke/filetransfer/SOCKS5BytestreamProxiesManager.java b/src/com/isode/stroke/filetransfer/SOCKS5BytestreamProxiesManager.java
index 14c7ea3..eab3031 100644
--- a/src/com/isode/stroke/filetransfer/SOCKS5BytestreamProxiesManager.java
+++ b/src/com/isode/stroke/filetransfer/SOCKS5BytestreamProxiesManager.java
@@ -27,2 +27,3 @@ import com.isode.stroke.network.HostAddress;
import com.isode.stroke.queries.IQRouter;
+import com.isode.stroke.session.Session;
import com.isode.stroke.signals.Slot1;
@@ -33,2 +34,4 @@ import com.isode.stroke.elements.S5BProxyRequest;
import com.isode.stroke.jid.JID;
+
+import java.util.Iterator;
import java.util.Vector;
@@ -51,5 +54,5 @@ public class SOCKS5BytestreamProxiesManager {
private Logger logger_ = Logger.getLogger(this.getClass().getName());
- private SignalConnection onSessionReadyConnection;
- private SignalConnection onFinishedConnection;
+ // TODO plonk this into the pair or not
+ // TODO think what this is trying to do?
private static class Pair {
@@ -63,2 +66,16 @@ public class SOCKS5BytestreamProxiesManager {
+ /**
+ * Map between {@link SOCKS5BytestreamClientSession} and a {@link SignalConnection} to their
+ * {@link SOCKS5BytestreamClientSession#onSessionReady}
+ */
+ private Map<SOCKS5BytestreamClientSession,SignalConnection> onSessionReadyConnectionMap =
+ new HashMap<SOCKS5BytestreamClientSession,SignalConnection>();
+
+ /**
+ * Map between {@link SOCKS5BytestreamClientSession} and a {@link SignalConnection} to their
+ * {@link SOCKS5BytestreamClientSession#onFinished}
+ */
+ private Map<SOCKS5BytestreamClientSession,SignalConnection> onFinishedConnectionMap =
+ new HashMap<SOCKS5BytestreamClientSession,SignalConnection>();
+
private SOCKS5BytestreamProxyFinder proxyFinder_;
@@ -109,3 +126,3 @@ public class SOCKS5BytestreamProxiesManager {
clientSessions.add(new Pair(proxyJid, session));
- onSessionReadyConnection = session.onSessionReady.connect(new Slot1<Boolean>() {
+ SignalConnection onSessionReadyConnection = session.onSessionReady.connect(new Slot1<Boolean>() {
@Override
@@ -115,3 +132,4 @@ public class SOCKS5BytestreamProxiesManager {
});
- onFinishedConnection = session.onFinished.connect(new Slot1<FileTransferError>() {
+ onSessionReadyConnectionMap.put(session, onSessionReadyConnection);
+ SignalConnection onFinishedConnection = session.onFinished.connect(new Slot1<FileTransferError>() {
@Override
@@ -121,2 +139,3 @@ public class SOCKS5BytestreamProxiesManager {
});
+ onFinishedConnectionMap.put(session, onFinishedConnection);
session.start();
@@ -137,4 +156,12 @@ public class SOCKS5BytestreamProxiesManager {
for(Pair i : proxySessions_.get(sessionID)) {
- i.sock5.onSessionReady.disconnectAll();
- i.sock5.onFinished.disconnectAll();
+ SignalConnection onSessionReadyConnection =
+ onSessionReadyConnectionMap.remove(i.sock5);
+ if (onSessionReadyConnection != null) {
+ onSessionReadyConnection.disconnect();
+ }
+ SignalConnection onFinishedConnection =
+ onFinishedConnectionMap.remove(i.sock5);
+ if (onFinishedConnection != null) {
+ onFinishedConnection.disconnect();
+ }
if (i.jid.equals(proxyJID) && activeSession == null) {
@@ -219,3 +246,6 @@ public class SOCKS5BytestreamProxiesManager {
private void handleProxySessionReady(final String sessionID, final JID jid, SOCKS5BytestreamClientSession session, boolean error) {
- onSessionReadyConnection.disconnect();
+ SignalConnection onSessionReadyConnection = onSessionReadyConnectionMap.remove(session);
+ if (onSessionReadyConnection != null) {
+ onSessionReadyConnection.disconnect();
+ }
if (!error) {
@@ -223,7 +253,9 @@ public class SOCKS5BytestreamProxiesManager {
if (proxySessions_.containsKey(sessionID)) {
- for(Pair i : proxySessions_.get(sessionID)) {
- if ((i.jid.equals(jid)) && (!i.sock5.equals(session))) {
- i.sock5.stop();
- proxySessions_.get(sessionID).remove(i); //Swiften assigns i, so that iterator points to the next element.
- }
+ Iterator<Pair> iterator = proxySessions_.get(sessionID).iterator();
+ while (iterator.hasNext()) {
+ Pair i = iterator.next();
+ if ((i.jid.equals(jid)) && (!i.sock5.equals(session))) {
+ i.sock5.stop();
+ iterator.remove();; //Swiften assigns i, so that iterator points to the next element.
+ }
}
@@ -234,3 +266,6 @@ public class SOCKS5BytestreamProxiesManager {
private void handleProxySessionFinished(final String sessionID, final JID jid, SOCKS5BytestreamClientSession session, FileTransferError error) {
- onFinishedConnection.disconnect();
+ SignalConnection onFinishedConnection = onFinishedConnectionMap.remove(session);
+ if (onFinishedConnection != null) {
+ onFinishedConnection.disconnect();
+ }
if (error != null) {
@@ -238,9 +273,11 @@ public class SOCKS5BytestreamProxiesManager {
if (proxySessions_.containsKey(sessionID)) {
- for(Pair i : proxySessions_.get(sessionID)) {
- if ((i.jid.equals(jid)) && (i.sock5.equals(session))) {
- i.sock5.stop();
- proxySessions_.get(sessionID).remove(i); //Swiften assigns i, so that iterator points to the next element.
- break;
- }
- }
+ Iterator<Pair> iterator = proxySessions_.get(sessionID).iterator();
+ while (iterator.hasNext()) {
+ Pair i = iterator.next();
+ if ((i.jid.equals(jid)) && (i.sock5.equals(session))) {
+ i.sock5.stop();
+ iterator.remove();; //Swiften assigns i, so that iterator points to the next element.
+ break;
+ }
+ }
}
diff --git a/src/com/isode/stroke/filetransfer/SOCKS5BytestreamServer.java b/src/com/isode/stroke/filetransfer/SOCKS5BytestreamServer.java
index 3a745e2..1c9eb31 100644
--- a/src/com/isode/stroke/filetransfer/SOCKS5BytestreamServer.java
+++ b/src/com/isode/stroke/filetransfer/SOCKS5BytestreamServer.java
@@ -20,2 +20,6 @@ import com.isode.stroke.signals.Slot1;
import com.isode.stroke.signals.Slot;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
import java.util.Vector;
@@ -28,3 +32,9 @@ public class SOCKS5BytestreamServer {
private SignalConnection onNewConnectionConn;
- private SignalConnection onFinishedConnection;
+
+ /**
+ * Map between {@link SOCKS5BytestreamServerSession} and the {@link SignalConnection}
+ * to that session's {@link SOCKS5BytestreamServerSession#onFinished} signal.
+ */
+ private Map<SOCKS5BytestreamServerSession, SignalConnection> sessionOnFinishedConnectionMap =
+ new HashMap<SOCKS5BytestreamServerSession, SignalConnection>();
@@ -51,3 +61,6 @@ public class SOCKS5BytestreamServer {
for (SOCKS5BytestreamServerSession session : sessions) {
- session.onFinished.disconnectAll();
+ SignalConnection onFinishedConnection = sessionOnFinishedConnectionMap.remove(session);
+ if (onFinishedConnection != null) {
+ onFinishedConnection.disconnect();
+ }
session.stop();
@@ -69,3 +82,3 @@ public class SOCKS5BytestreamServer {
final SOCKS5BytestreamServerSession session = new SOCKS5BytestreamServerSession(connection, registry);
- onFinishedConnection = session.onFinished.connect(new Slot1<FileTransferError>() {
+ SignalConnection onFinishedConnection = session.onFinished.connect(new Slot1<FileTransferError>() {
@Override
@@ -76,2 +89,4 @@ public class SOCKS5BytestreamServer {
sessions.add(session);
+ sessionOnFinishedConnectionMap.put(session, onFinishedConnection);
+
session.start();
@@ -80,6 +95,9 @@ public class SOCKS5BytestreamServer {
private void handleSessionFinished(SOCKS5BytestreamServerSession session) {
- while(sessions.contains(session)) {
- sessions.remove(session);
+ while(sessions.remove(session)) {
+ // Loop will run till session no longer is sessions
+ }
+ SignalConnection onFinishedConnection = sessionOnFinishedConnectionMap.remove(session);
+ if (onFinishedConnection != null) {
+ onFinishedConnection.disconnect();
}
- onFinishedConnection.disconnect();
}
diff --git a/src/com/isode/stroke/filetransfer/SOCKS5BytestreamServerPortForwardingUser.java b/src/com/isode/stroke/filetransfer/SOCKS5BytestreamServerPortForwardingUser.java
index dc3c3b7..277d7f8 100644
--- a/src/com/isode/stroke/filetransfer/SOCKS5BytestreamServerPortForwardingUser.java
+++ b/src/com/isode/stroke/filetransfer/SOCKS5BytestreamServerPortForwardingUser.java
@@ -25,3 +25,3 @@ public class SOCKS5BytestreamServerPortForwardingUser {
// the server should be initialized, so we know what port to setup a forward for
- assert(s5bServerManager != null);
+ assert(s5bServerManager.isInitialized());
if (s5bServerManager_.isPortForwardingReady()) {
diff --git a/src/com/isode/stroke/filetransfer/SOCKS5BytestreamServerResourceUser.java b/src/com/isode/stroke/filetransfer/SOCKS5BytestreamServerResourceUser.java
index acb8af1..c814b1d 100644
--- a/src/com/isode/stroke/filetransfer/SOCKS5BytestreamServerResourceUser.java
+++ b/src/com/isode/stroke/filetransfer/SOCKS5BytestreamServerResourceUser.java
@@ -24,3 +24,3 @@ public class SOCKS5BytestreamServerResourceUser {
this.s5bServerManager_ = s5bServerManager;
- assert(s5bServerManager_ == null);
+ assert(!s5bServerManager_.isInitialized());
onInitializedConnection_ = s5bServerManager_.onInitialized.connect(new Slot1<Boolean>() {
@@ -38,3 +38,3 @@ public class SOCKS5BytestreamServerResourceUser {
public void delete() {
- if (s5bServerManager_ != null) {
+ if (s5bServerManager_.isInitialized()) {
s5bServerManager_.stop();