summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/FileTransfer/OutgoingJingleFileTransfer.cpp')
-rw-r--r--Swiften/FileTransfer/OutgoingJingleFileTransfer.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/Swiften/FileTransfer/OutgoingJingleFileTransfer.cpp b/Swiften/FileTransfer/OutgoingJingleFileTransfer.cpp
index 9b71165..5e2a1c3 100644
--- a/Swiften/FileTransfer/OutgoingJingleFileTransfer.cpp
+++ b/Swiften/FileTransfer/OutgoingJingleFileTransfer.cpp
@@ -33,24 +33,25 @@
#include <Swiften/Base/Log.h>
namespace Swift {
OutgoingJingleFileTransfer::OutgoingJingleFileTransfer(JingleSession::ref session,
RemoteJingleTransportCandidateSelectorFactory* remoteFactory,
LocalJingleTransportCandidateGeneratorFactory* localFactory,
IQRouter* router,
IDGenerator *idGenerator,
+ const JID& fromJID,
const JID& toJID,
boost::shared_ptr<ReadBytestream> readStream,
const StreamInitiationFileInfo &fileInfo,
SOCKS5BytestreamRegistry* bytestreamRegistry,
SOCKS5BytestreamProxy* bytestreamProxy) :
- session(session), remoteFactory(remoteFactory), localFactory(localFactory), router(router), idGenerator(idGenerator), toJID(toJID), readStream(readStream), fileInfo(fileInfo), s5bRegistry(bytestreamRegistry), s5bProxy(bytestreamProxy), serverSession(NULL), contentID(JingleContentID(idGenerator->generateID(), JingleContentPayload::InitiatorCreator)), canceled(false) {
+ session(session), remoteFactory(remoteFactory), localFactory(localFactory), router(router), idGenerator(idGenerator), fromJID(fromJID), toJID(toJID), readStream(readStream), fileInfo(fileInfo), s5bRegistry(bytestreamRegistry), s5bProxy(bytestreamProxy), serverSession(NULL), contentID(JingleContentID(idGenerator->generateID(), JingleContentPayload::InitiatorCreator)), canceled(false) {
session->onSessionAcceptReceived.connect(boost::bind(&OutgoingJingleFileTransfer::handleSessionAcceptReceived, this, _1, _2, _3));
session->onSessionTerminateReceived.connect(boost::bind(&OutgoingJingleFileTransfer::handleSessionTerminateReceived, this, _1));
session->onTransportInfoReceived.connect(boost::bind(&OutgoingJingleFileTransfer::handleTransportInfoReceived, this, _1, _2));
session->onTransportAcceptReceived.connect(boost::bind(&OutgoingJingleFileTransfer::handleTransportAcceptReceived, this, _1, _2));
fileSizeInBytes = fileInfo.getSize();
filename = fileInfo.getName();
localCandidateGenerator = localFactory->createCandidateGenerator();
localCandidateGenerator->onLocalTransportCandidatesGenerated.connect(boost::bind(&OutgoingJingleFileTransfer::handleLocalTransportCandidatesGenerated, this, _1));
@@ -103,19 +104,19 @@ void OutgoingJingleFileTransfer::cancel() {
void OutgoingJingleFileTransfer::handleSessionAcceptReceived(const JingleContentID& id, JingleDescription::ref /* decription */, JingleTransportPayload::ref transportPayload) {
if (canceled) {
return;
}
onStateChange(FileTransfer::State(FileTransfer::State::Negotiating));
JingleIBBTransportPayload::ref ibbPayload;
JingleS5BTransportPayload::ref s5bPayload;
if ((ibbPayload = boost::dynamic_pointer_cast<JingleIBBTransportPayload>(transportPayload))) {
- ibbSession = boost::make_shared<IBBSendSession>(ibbPayload->getSessionID(), toJID, readStream, router);
+ ibbSession = boost::make_shared<IBBSendSession>(ibbPayload->getSessionID(), fromJID, toJID, readStream, router);
ibbSession->setBlockSize(ibbPayload->getBlockSize());
ibbSession->onBytesSent.connect(boost::bind(boost::ref(onProcessedBytes), _1));
ibbSession->onFinished.connect(boost::bind(&OutgoingJingleFileTransfer::handleTransferFinished, this, _1));
ibbSession->start();
onStateChange(FileTransfer::State(FileTransfer::State::Transferring));
}
else if ((s5bPayload = boost::dynamic_pointer_cast<JingleS5BTransportPayload>(transportPayload))) {
fillCandidateMap(theirCandidates, s5bPayload);
remoteCandidateSelector->setRequesterTargtet(toJID, session->getInitiator());
@@ -157,19 +158,19 @@ void OutgoingJingleFileTransfer::handleSessionTerminateReceived(boost::optional<
canceled = true;
}
void OutgoingJingleFileTransfer::handleTransportAcceptReceived(const JingleContentID& /* contentID */, JingleTransportPayload::ref transport) {
if (canceled) {
return;
}
if (JingleIBBTransportPayload::ref ibbPayload = boost::dynamic_pointer_cast<JingleIBBTransportPayload>(transport)) {
- ibbSession = boost::make_shared<IBBSendSession>(ibbPayload->getSessionID(), toJID, readStream, router);
+ ibbSession = boost::make_shared<IBBSendSession>(ibbPayload->getSessionID(), fromJID, toJID, readStream, router);
ibbSession->setBlockSize(ibbPayload->getBlockSize());
ibbSession->onBytesSent.connect(boost::bind(boost::ref(onProcessedBytes), _1));
ibbSession->onFinished.connect(boost::bind(&OutgoingJingleFileTransfer::handleTransferFinished, this, _1));
ibbSession->start();
onStateChange(FileTransfer::State(FileTransfer::State::Transferring));
} else {
// error handling
SWIFT_LOG(debug) << "Replacing with anything other than IBB isn't supported yet." << std::endl;
session->sendTerminate(JinglePayload::Reason::FailedTransport);