diff options
author | Alex Clayton <alex.clayton@isode.com> | 2016-03-16 15:45:11 (GMT) |
---|---|---|
committer | Alex Clayton <alex.clayton@isode.com> | 2016-03-16 15:57:40 (GMT) |
commit | f693c8e0fa9c6a051cdf6260f131db3d9355b49f (patch) | |
tree | 10ca50f0c3494566e005f9c202f7d3b6c6d036f9 /src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java | |
parent | 8b9891afc85d114ff1e9c9a0291a4aaee8baeb09 (diff) | |
download | stroke-f693c8e0fa9c6a051cdf6260f131db3d9355b49f.zip stroke-f693c8e0fa9c6a051cdf6260f131db3d9355b49f.tar.bz2 |
Support early IBB use in Jingle File Transfer
As per swiften patch of the same name
(75703db2de5bbfb6622286600362016edb42dfb0).
Previously Jingle File Transfer in Stroke only used IBB transport as
fallback mechanism. With this patch Stroke will use IBB transport
candidates directly in the first session-initate/session-accept
message if the other party only supports IBB.
Test-information: Unit tests all pass.
Change-Id: Ice73a6028f10c63490bdb775a0a407fad48f587a
Diffstat (limited to 'src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java')
-rw-r--r-- | src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java b/src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java index 1c67014..f6aa01f 100644 --- a/src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java +++ b/src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java @@ -171,16 +171,16 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In } }); - if (initialContent.getTransport(new JingleS5BTransportPayload()) != null) { - JingleS5BTransportPayload s5bTransport = initialContent.getTransport(new JingleS5BTransportPayload()); + JingleS5BTransportPayload s5bTransport = initialContent.getTransport(new JingleS5BTransportPayload()); + JingleIBBTransportPayload ibbTransport = initialContent.getTransport(new JingleIBBTransportPayload()); + if (s5bTransport != null) { logger_.fine("Got S5B transport as initial payload.\n"); setTransporter(transporterFactory.createResponderTransporter(getInitiator(), getResponder(), s5bTransport.getSessionID(), options)); transporter.addRemoteCandidates(s5bTransport.getCandidates(), s5bTransport.getDstAddr()); setInternalState(State.GeneratingInitialLocalCandidates); transporter.startGeneratingLocalCandidates(); } - else if(initialContent.getTransport(new JingleIBBTransportPayload()) != null) { - JingleIBBTransportPayload ibbTransport = initialContent.getTransport(new JingleIBBTransportPayload()); + else if(ibbTransport != null && options.isInBandAllowed()) { logger_.fine("Got IBB transport as initial payload.\n"); setTransporter(transporterFactory.createResponderTransporter(getInitiator(), getResponder(), ibbTransport.getSessionID(), options)); @@ -189,8 +189,9 @@ public class IncomingJingleFileTransfer extends JingleFileTransfer implements In session.sendAccept(getContentID(), initialContent.getDescriptions().get(0), ibbTransport); } else { - // Can't happen, because the transfer would have been rejected automatically - assert(false); + // This might happen on incoming transfer which only list transport methods we are not allowed to use due to file-transfer options. + session.sendTerminate(JinglePayload.Reason.Type.UnsupportedTransports); + setFinishedState(FileTransfer.State.Type.Failed, new FileTransferError(FileTransferError.Type.PeerError)); } } |