diff options
| author | Alex Clayton <alex.clayton@isode.com> | 2016-03-14 16:56:32 (GMT) |
|---|---|---|
| committer | Alex Clayton <alex.clayton@isode.com> | 2016-03-15 14:13:57 (GMT) |
| commit | 826bc53ab9839d4f6dff28cdb4d5dc1b317016de (patch) | |
| tree | 87dcc73c152f550d618c64ef89198e279ec8bacc | |
| parent | 3dcfa7102ac07188ac0c1c8b252d45735abd31ea (diff) | |
| download | stroke-826bc53ab9839d4f6dff28cdb4d5dc1b317016de.zip stroke-826bc53ab9839d4f6dff28cdb4d5dc1b317016de.tar.bz2 | |
Only calculate S5B candidates if supported by recipient
As per swiften patch of the same name
(e9ed818dac91e280eb8da86dc8494710f1da0624), some changes to
FileTransferMangerImpl on how it creates an Outgoing File Transfer.
Also added a copy constructor to FileTransferOption that had been in
swiften but was not yet implemented in stroke.
Change-Id: I314ac5ef7f8e082c7121ad89c012b84569f98d6c
Test-information: Unit tests still pass.
| -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 @@ -1,13 +1,13 @@ /* * Copyright (c) 2011 Tobias Markmann * Licensed under the simplified BSD license. * 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. */ /* * Copyright (c) 2015 Tarun Gupta. * Licensed under the simplified BSD license. @@ -29,17 +29,19 @@ import com.isode.stroke.network.NetworkEnvironment; import com.isode.stroke.presence.PresenceOracle; import com.isode.stroke.network.TimerFactory; 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 { private OutgoingFileTransferManager outgoingFTManager; private IncomingFileTransferManager incomingFTManager; private FileTransferTransporterFactory transporterFactory; @@ -47,12 +49,14 @@ public class FileTransferManagerImpl extends FileTransferManager { private EntityCapsProvider capsProvider; private PresenceOracle presenceOracle; private IDGenerator idGenerator; private SOCKS5BytestreamRegistry bytestreamRegistry; private SOCKS5BytestreamProxiesManager bytestreamProxy; private SOCKS5BytestreamServerManager s5bServerManager; + + private final Logger logger = Logger.getLogger(this.getClass().getName()); public FileTransferManagerImpl( final JID ownJID, JingleSessionManager jingleSessionManager, IQRouter router, EntityCapsProvider capsProvider, @@ -150,12 +154,27 @@ public class FileTransferManagerImpl extends FileTransferManager { return null; } } 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); } public void start() { } 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,33 +1,44 @@ /* - * Copyright (c) 2013-2015 Isode Limited. + * Copyright (c) 2013-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ /* * Copyright (c) 2015 Tarun Gupta. * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ package com.isode.stroke.filetransfer; public class FileTransferOptions { - + private boolean allowInBand_; private boolean allowAssisted_; private boolean allowProxied_; private boolean allowDirect_; public FileTransferOptions() { allowInBand_ = true; allowAssisted_ = true; allowProxied_ = true; 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; } public boolean isInBandAllowed() { |
Swift