diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jet/JetManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jet/JetManager.java index 38ecf0613..e3f549bc0 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jet/JetManager.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jet/JetManager.java @@ -101,7 +101,7 @@ public final class JetManager extends Manager implements JingleDescriptionManage JetSecurity security = new JetSecurity(method, recipient, content.getName(), Aes256GcmNoPadding.NAMESPACE); content.setSecurity(security); - session.initiate(connection()); + session.sendInitiate(connection()); return offer; } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/JingleFileTransferManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/JingleFileTransferManager.java index 004c72dda..4988f5683 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/JingleFileTransferManager.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/JingleFileTransferManager.java @@ -46,6 +46,7 @@ import org.jivesoftware.smackx.jingle.JingleManager; import org.jivesoftware.smackx.jingle.JingleTransportManager; import org.jivesoftware.smackx.jingle.component.JingleContent; import org.jivesoftware.smackx.jingle.component.JingleSession; +import org.jivesoftware.smackx.jingle.component.JingleTransport; import org.jivesoftware.smackx.jingle.element.JingleContentElement; import org.jivesoftware.smackx.jingle.util.Role; @@ -109,9 +110,10 @@ public final class JingleFileTransferManager extends Manager implements JingleDe content.setDescription(offer); JingleTransportManager transportManager = jingleManager.getBestAvailableTransportManager(to); - content.setTransport(transportManager.createTransportForInitiator(content)); + JingleTransport transport = transportManager.createTransportForInitiator(content); + content.setTransport(transport); - session.initiate(connection()); + session.sendInitiate(connection()); return offer; } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/component/JingleIncomingFileOffer.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/component/JingleIncomingFileOffer.java index 3b5c3959c..df5da5ad5 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/component/JingleIncomingFileOffer.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jft/component/JingleIncomingFileOffer.java @@ -125,7 +125,7 @@ public class JingleIncomingFileOffer extends AbstractJingleFileOffer this.target = target; JingleSession session = getParent().getParent(); if (session.getSessionState() == JingleSession.SessionState.pending) { - session.accept(connection); + session.sendAccept(connection); } return null; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/component/JingleSession.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/component/JingleSession.java index 2f411c532..272c0d1e8 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/component/JingleSession.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/component/JingleSession.java @@ -92,7 +92,7 @@ public class JingleSession { return session; } - public void initiate(XMPPConnection connection) throws SmackException.NotConnectedException, InterruptedException, XMPPException.XMPPErrorException, SmackException.NoResponseException { + public void sendInitiate(XMPPConnection connection) throws SmackException.NotConnectedException, InterruptedException, XMPPException.XMPPErrorException, SmackException.NoResponseException { if (this.sessionState != SessionState.fresh) { throw new IllegalStateException("Session is not in fresh state."); } @@ -101,7 +101,7 @@ public class JingleSession { this.sessionState = SessionState.pending; } - public void accept(XMPPConnection connection) throws SmackException.NotConnectedException, InterruptedException, XMPPException.XMPPErrorException, SmackException.NoResponseException { + public void sendAccept(XMPPConnection connection) throws SmackException.NotConnectedException, InterruptedException, XMPPException.XMPPErrorException, SmackException.NoResponseException { LOGGER.log(Level.INFO, "Accepted session."); if (this.sessionState != SessionState.pending) { throw new IllegalStateException("Session is not in pending state."); @@ -379,6 +379,9 @@ public class JingleSession { } public void addContent(JingleContent content) { + if (contents.get(content.getName()) != null) { + throw new IllegalArgumentException("Session already contains a content with the name " + content.getName()); + } contents.put(content.getName(), content); content.setParent(this); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransport.java index 59a1d9ded..62870805d 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransport.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransport.java @@ -202,7 +202,7 @@ public class JingleS5BTransport extends JingleTransport createTransportForInitiator(JingleContent content) { JingleSession session = content.getParent(); + String sid = StringUtils.randomString(24); List> candidates = collectCandidates(); - return new JingleS5BTransport(session.getInitiator(), session.getResponder(), StringUtils.randomString(24), Bytestream.Mode.tcp, candidates); + return new JingleS5BTransport(session.getInitiator(), session.getResponder(), sid, Bytestream.Mode.tcp, candidates); } @Override