1
0
Fork 0
mirror of https://github.com/vanitasvitae/Smack.git synced 2024-11-23 20:42:06 +01:00

Add cleanup for transports, improve content states

This commit is contained in:
vanitasvitae 2017-08-04 15:08:49 +02:00
parent cc4de48966
commit cdcf0d590a
Signed by: vanitasvitae
GPG key ID: 62BEE9264BF17311
5 changed files with 46 additions and 9 deletions

View file

@ -361,7 +361,7 @@ public final class Socks5Proxy {
* *
* @param digest to be removed from the list of allowed transfers * @param digest to be removed from the list of allowed transfers
*/ */
protected void removeTransfer(String digest) { public void removeTransfer(String digest) {
this.allowedConnections.remove(digest); this.allowedConnections.remove(digest);
this.connectionMap.remove(digest); this.connectionMap.remove(digest);
} }

View file

@ -67,14 +67,39 @@ public class JingleContent implements JingleTransportCallback, JingleSecurityCal
private final List<Callback> callbacks = Collections.synchronizedList(new ArrayList<Callback>()); private final List<Callback> callbacks = Collections.synchronizedList(new ArrayList<Callback>());
private final Set<String> transportBlacklist = Collections.synchronizedSet(new HashSet<String>()); private final Set<String> transportBlacklist = Collections.synchronizedSet(new HashSet<String>());
private short state;
public enum STATE { public enum STATE {
pending_accept, pending_accept((short) 1),
pending_transmission_start, pending_transmission_start((short) 2),
pending_transport_replace, pending_transport_replace((short) 4),
transmission_in_progress, transmission_in_progress((short) 8),
transmission_successful, transmission_successful((short) 16),
transmission_failed, transmission_failed((short) 32),
transmission_cancelled transmission_cancelled((short) 64),
;
final short value;
STATE(short value) {
this.value = value;
}
short getValue() {
return value;
}
}
public void addState(STATE state) {
this.state |= state.getValue();
}
public void removeState(STATE state) {
this.state ^= state.getValue();
}
public boolean hasState(STATE state) {
return (this.state & state.getValue()) == state.getValue();
} }
public JingleContent(JingleContentElement.Creator creator, JingleContentElement.Senders senders) { public JingleContent(JingleContentElement.Creator creator, JingleContentElement.Senders senders) {

View file

@ -135,4 +135,6 @@ public abstract class JingleTransport<D extends JingleContentTransportElement> e
} }
public abstract void handleSessionAccept(JingleContentTransportElement transportElement, XMPPConnection connection); public abstract void handleSessionAccept(JingleContentTransportElement transportElement, XMPPConnection connection);
public abstract void cleanup();
} }

View file

@ -126,6 +126,11 @@ public class JingleIBBTransport extends JingleTransport<JingleIBBTransportElemen
} }
} }
@Override
public void cleanup() {
// Nothing to do.
}
@Override @Override
public void addOurCandidate(JingleTransportCandidate<?> candidate) { public void addOurCandidate(JingleTransportCandidate<?> candidate) {
// Sorry, we don't want any candidates. // Sorry, we don't want any candidates.
@ -133,7 +138,7 @@ public class JingleIBBTransport extends JingleTransport<JingleIBBTransportElemen
@Override @Override
public void prepare(XMPPConnection connection) { public void prepare(XMPPConnection connection) {
// Nuffin taddooh. // Nothing to do.
} }
@Override @Override

View file

@ -276,6 +276,11 @@ public class JingleS5BTransport extends JingleTransport<JingleS5BTransportElemen
return CANDIDATE_FAILURE; return CANDIDATE_FAILURE;
} }
@Override
public void cleanup() {
Socks5Proxy.getSocks5Proxy().removeTransfer(ourDstAddr);
}
void connectIfReady() { void connectIfReady() {
final JingleS5BTransportManager jingleS5BTransportManager = JingleS5BTransportManager.getInstanceFor(getParent().getParent().getJingleManager().getConnection()); final JingleS5BTransportManager jingleS5BTransportManager = JingleS5BTransportManager.getInstanceFor(getParent().getParent().getJingleManager().getConnection());
final JingleSession session = getParent().getParent(); final JingleSession session = getParent().getParent();