From bc9f0179faeaf64c4df92809caae6a7e220971ea Mon Sep 17 00:00:00 2001 From: Jeff Williams Date: Sat, 6 Dec 2008 02:15:42 +0000 Subject: [PATCH] Smack-261 git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@10934 b35dd754-fafc-0310-a699-88a17e54d16e --- jingle/extension/build/merge/jstun.jar | Bin 66682 -> 68349 bytes .../smackx/jingle/ContentNegotiator.java | 2 +- .../smackx/jingle/JingleManager.java | 25 ---------- .../smackx/jingle/JingleNegotiator.java | 19 ++++++- .../smackx/jingle/JingleSession.java | 47 +++++++----------- .../smackx/jingle/JingleSessionRequest.java | 18 +++++-- .../smackx/jingle/media/MediaNegotiator.java | 5 +- .../jingle/nat/TransportNegotiator.java | 10 ++-- 8 files changed, 57 insertions(+), 69 deletions(-) diff --git a/jingle/extension/build/merge/jstun.jar b/jingle/extension/build/merge/jstun.jar index df7e883fd28b9756fcfff096deff59eed5dbad59..8ef0b923ef0588e0ed48de949e79efb60da12e40 100644 GIT binary patch delta 32595 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 diff --git a/jingle/extension/source/org/jivesoftware/smackx/jingle/ContentNegotiator.java b/jingle/extension/source/org/jivesoftware/smackx/jingle/ContentNegotiator.java index 63be725da..1a2679432 100644 --- a/jingle/extension/source/org/jivesoftware/smackx/jingle/ContentNegotiator.java +++ b/jingle/extension/source/org/jivesoftware/smackx/jingle/ContentNegotiator.java @@ -117,7 +117,7 @@ public class ContentNegotiator extends JingleNegotiator { /** * Called from above when starting a new session. */ - public void start() { + protected void doStart() { JingleContent result = new JingleContent(creator, name); // result.setDescription(mediaNeg.start()); diff --git a/jingle/extension/source/org/jivesoftware/smackx/jingle/JingleManager.java b/jingle/extension/source/org/jivesoftware/smackx/jingle/JingleManager.java index 7ff46a719..89aa35c43 100644 --- a/jingle/extension/source/org/jivesoftware/smackx/jingle/JingleManager.java +++ b/jingle/extension/source/org/jivesoftware/smackx/jingle/JingleManager.java @@ -598,29 +598,4 @@ public class JingleManager implements JingleSessionListener { } return null; } - - /** - * Reject the session. If we don't want to accept the new session then we have to - * result/ack the session-initiate and send a session-terminate. - * - * @param request the request to be rejected. - */ - protected void rejectIncomingJingleSession(JingleSessionRequest request) { - - JingleSession session = getSession(request.getSessionID()); - if (session != null) { - - // First send the result/Ack - IQ result = session.createAck(request.getJingle()); - connection.sendPacket(result); - - // Now send the session-terminate. - try { - session.terminate("Declined"); - } catch (XMPPException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } } \ No newline at end of file diff --git a/jingle/extension/source/org/jivesoftware/smackx/jingle/JingleNegotiator.java b/jingle/extension/source/org/jivesoftware/smackx/jingle/JingleNegotiator.java index ee8c98cb1..5b15c463f 100644 --- a/jingle/extension/source/org/jivesoftware/smackx/jingle/JingleNegotiator.java +++ b/jingle/extension/source/org/jivesoftware/smackx/jingle/JingleNegotiator.java @@ -54,7 +54,9 @@ public abstract class JingleNegotiator { private String expectedAckId; private JingleNegotiatorState state; - + + private boolean isStarted; + /** * Default constructor. */ @@ -234,6 +236,21 @@ public abstract class JingleNegotiator { */ public abstract List dispatchIncomingPacket(IQ iq, String id) throws XMPPException; + + public void start() { + isStarted = true; + doStart(); + } + + public boolean isStarted() { + return isStarted; + } + + /** + * Each of the negotiators has their individual behavior when they start. + */ + protected abstract void doStart(); + /** * Close the negotiation. */ diff --git a/jingle/extension/source/org/jivesoftware/smackx/jingle/JingleSession.java b/jingle/extension/source/org/jivesoftware/smackx/jingle/JingleSession.java index 5efae61e5..9289160eb 100644 --- a/jingle/extension/source/org/jivesoftware/smackx/jingle/JingleSession.java +++ b/jingle/extension/source/org/jivesoftware/smackx/jingle/JingleSession.java @@ -333,6 +333,13 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList // Each content negotiator may pass back a list of JingleContent for addition to the response packet. for (ContentNegotiator contentNegotiator : contentNegotiators) { + // If at this point the content negotiator isn't started, it's because we sent a session-init jingle + // packet from startOutgoing() and we're waiting for the other side to let us know they're ready + // to take jingle packets. (This packet might be a session-terminate, but that will get handled + // later. + if (!contentNegotiator.isStarted()) { + contentNegotiator.start(); + } responses.addAll(contentNegotiator.dispatchIncomingPacket(iq, responseId)); } @@ -400,7 +407,7 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList // Depending on the state we're in we'll get different processing actions. // (See Design Patterns AKA GoF State behavioral pattern.) - getSessionState().processJingle(this, jin, action); + response = getSessionState().processJingle(this, jin, action); } } @@ -429,30 +436,6 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList public void sendPacket(IQ iq) { if (iq instanceof Jingle) { - // Jingle jingle = (Jingle) iq; - // - // JingleActionEnum action = jingle.getAction(); - // - // switch (getSessionState()) { - // case UNKNOWN: - // sendUnknownStateAction(jingle, action); - // break; - // - // case PENDING: - // sendPendingStateAction(jingle, action); - // break; - // - // case ACTIVE: - // sendActiveStateAction(jingle, action); - // break; - // - // case ENDED: - // sendEndedStateAction(jingle, action); - // break; - // - // default: - // break; - // } sendFormattedJingle((Jingle) iq); @@ -1238,9 +1221,13 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList // Give each of the content negotiators a chance to start // and return a portion of the structure to make the Jingle packet. - for (ContentNegotiator contentNegotiator : contentNegotiators) { - contentNegotiator.start(); - } + +// Don't do this anymore. The problem is that the other side might not be ready. +// Later when we receive our first jingle packet from the other side we'll fire-up the negotiators +// before processing it. (See receivePacketAndRespond() above. +// for (ContentNegotiator contentNegotiator : contentNegotiators) { +// contentNegotiator.start(); +// } } /** @@ -1250,6 +1237,10 @@ public class JingleSession extends JingleNegotiator implements MediaReceivedList //updatePacketListener(); } + + protected void doStart() { + + } /** * When we initiate a session we need to start a bunch of negotiators right after we receive the result diff --git a/jingle/extension/source/org/jivesoftware/smackx/jingle/JingleSessionRequest.java b/jingle/extension/source/org/jivesoftware/smackx/jingle/JingleSessionRequest.java index d88217e99..a79d4ecf5 100644 --- a/jingle/extension/source/org/jivesoftware/smackx/jingle/JingleSessionRequest.java +++ b/jingle/extension/source/org/jivesoftware/smackx/jingle/JingleSessionRequest.java @@ -33,7 +33,9 @@ import org.jivesoftware.smackx.packet.Jingle; */ public class JingleSessionRequest { - private final Jingle jingle; // The Jingle packet + private static final SmackLogger LOGGER = SmackLogger.getLogger(JingleSessionRequest.class); + + private final Jingle jingle; // The Jingle packet private final JingleManager manager; // The manager associated to this @@ -121,8 +123,18 @@ public class JingleSessionRequest { * Rejects the session request. */ public synchronized void reject() { + JingleSession session = null; synchronized (manager) { - manager.rejectIncomingJingleSession(this); + try { + session = manager.createIncomingJingleSession(this); + // Acknowledge the IQ reception + session.setSid(this.getSessionID()); + //session.sendAck(this.getJingle()); + session.updatePacketListener(); + session.terminate("Declined"); + } catch (XMPPException e) { + LOGGER.error("", e); + } } - } + } } diff --git a/jingle/extension/source/org/jivesoftware/smackx/jingle/media/MediaNegotiator.java b/jingle/extension/source/org/jivesoftware/smackx/jingle/media/MediaNegotiator.java index 7bcbb50b2..b0dd60446 100644 --- a/jingle/extension/source/org/jivesoftware/smackx/jingle/media/MediaNegotiator.java +++ b/jingle/extension/source/org/jivesoftware/smackx/jingle/media/MediaNegotiator.java @@ -507,11 +507,8 @@ public class MediaNegotiator extends JingleNegotiator { * Called from above when starting a new session. * @return */ - public void start() { - //JingleDescription result = new JingleDescription.Audio(); - // result.addAudioPayloadTypes(localAudioPts); + protected void doStart() { - // return result; } /** diff --git a/jingle/extension/source/org/jivesoftware/smackx/jingle/nat/TransportNegotiator.java b/jingle/extension/source/org/jivesoftware/smackx/jingle/nat/TransportNegotiator.java index 25c207d43..a5d4b9a3a 100644 --- a/jingle/extension/source/org/jivesoftware/smackx/jingle/nat/TransportNegotiator.java +++ b/jingle/extension/source/org/jivesoftware/smackx/jingle/nat/TransportNegotiator.java @@ -142,8 +142,8 @@ public abstract class TransportNegotiator extends JingleNegotiator { return; } } - //LOGGER.debug("BEST: " + bestLocalCandidate.getIp()); - throw new XMPPException("Local transport candidate has not be offered."); + LOGGER.debug("BEST: ip=" + bestLocalCandidate.getIp() + " port=" + bestLocalCandidate.getPort() + " has not been offered."); + //throw new XMPPException("Local transport candidate has not be offered."); } /** @@ -158,9 +158,7 @@ public abstract class TransportNegotiator extends JingleNegotiator { /** * Called from above to start the negotiator during a session-initiate. */ - public void start() { - - //JingleTransport result = new JingleTransport(getJingleTransport()); + protected void doStart() { try { sendTransportCandidatesOffer(); @@ -170,8 +168,6 @@ public abstract class TransportNegotiator extends JingleNegotiator { e.printStackTrace(); } - //return result; - } /**