diff options
-rw-r--r-- | src/com/isode/stroke/filetransfer/FileTransferManagerImpl.java | 21 | ||||
-rw-r--r-- | src/com/isode/stroke/filetransfer/FileTransferOptions.java | 15 |
2 files changed, 33 insertions, 3 deletions
diff --git a/src/com/isode/stroke/filetransfer/FileTransferManagerImpl.java b/src/com/isode/stroke/filetransfer/FileTransferManagerImpl.java index da5e120..386bfa9 100644 --- a/src/com/isode/stroke/filetransfer/FileTransferManagerImpl.java +++ b/src/com/isode/stroke/filetransfer/FileTransferManagerImpl.java @@ -4,7 +4,7 @@ * See Documentation/Licenses/BSD-simplified.txt for more information. */ /* - * Copyright (c) 2013-2015 Isode Limited. + * Copyright (c) 2013-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ @@ -32,11 +32,13 @@ import com.isode.stroke.base.IDGenerator; import com.isode.stroke.elements.DiscoInfo; import com.isode.stroke.elements.Presence; import com.isode.stroke.elements.JingleFileTransferFileInfo; + import java.io.File; import java.util.Date; import java.util.TimeZone; import java.util.Vector; import java.util.Collection; +import java.util.logging.Logger; public class FileTransferManagerImpl extends FileTransferManager { @@ -50,6 +52,8 @@ public class FileTransferManagerImpl extends FileTransferManager { private SOCKS5BytestreamRegistry bytestreamRegistry; private SOCKS5BytestreamProxiesManager bytestreamProxy; private SOCKS5BytestreamServerManager s5bServerManager; + + private final Logger logger = Logger.getLogger(this.getClass().getName()); public FileTransferManagerImpl( final JID ownJID, @@ -153,6 +157,21 @@ public class FileTransferManagerImpl extends FileTransferManager { assert(!iqRouter.getJID().isBare()); + DiscoInfo capabilities = capsProvider.getCaps(receipient); + + FileTransferOptions options = new FileTransferOptions(config); + if (capabilities != null) { + if (!capabilities.hasFeature(DiscoInfo.JingleTransportsS5BFeature)) { + options = options.withAssistedAllowed(false).withDirectAllowed(false).withProxiedAllowed(false); + } + if (!capabilities.hasFeature(DiscoInfo.JingleTransportsIBBFeature)) { + options = options.withInBandAllowed(false); + } + } + else { + logger.warning("No entity capabilities information for "+receipient.toString()+"\n"); + } + return outgoingFTManager.createOutgoingFileTransfer(iqRouter.getJID(), receipient, bytestream, fileInfo, config); } diff --git a/src/com/isode/stroke/filetransfer/FileTransferOptions.java b/src/com/isode/stroke/filetransfer/FileTransferOptions.java index fd529e9..73fe1a1 100644 --- a/src/com/isode/stroke/filetransfer/FileTransferOptions.java +++ b/src/com/isode/stroke/filetransfer/FileTransferOptions.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015 Isode Limited. + * Copyright (c) 2013-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ @@ -12,7 +12,7 @@ package com.isode.stroke.filetransfer; public class FileTransferOptions { - + private boolean allowInBand_; private boolean allowAssisted_; private boolean allowProxied_; @@ -25,6 +25,17 @@ public class FileTransferOptions { allowDirect_ = true; } + /** + * Copy constructor + * @param other {@link FileTransferOptions} to copy + */ + public FileTransferOptions(FileTransferOptions other) { + this.allowInBand_ = other.allowInBand_; + this.allowAssisted_ = other.allowAssisted_; + this.allowProxied_ = other.allowProxied_; + this.allowDirect_ = other.allowDirect_; + } + public FileTransferOptions withInBandAllowed(boolean b) { allowInBand_ = b; return this; |