summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Clayton <alex.clayton@isode.com>2016-03-16 15:45:11 (GMT)
committerAlex Clayton <alex.clayton@isode.com>2016-03-16 15:57:40 (GMT)
commitf693c8e0fa9c6a051cdf6260f131db3d9355b49f (patch)
tree10ca50f0c3494566e005f9c202f7d3b6c6d036f9 /src/com/isode/stroke/filetransfer/IncomingJingleFileTransfer.java
parent8b9891afc85d114ff1e9c9a0291a4aaee8baeb09 (diff)
downloadstroke-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.java13
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));
}
}