summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/FileTransfer/IBBReceiveSession.cpp')
-rw-r--r--Swiften/FileTransfer/IBBReceiveSession.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/Swiften/FileTransfer/IBBReceiveSession.cpp b/Swiften/FileTransfer/IBBReceiveSession.cpp
index 566dcca..43c26be 100644
--- a/Swiften/FileTransfer/IBBReceiveSession.cpp
+++ b/Swiften/FileTransfer/IBBReceiveSession.cpp
@@ -8,18 +8,20 @@
#include <boost/bind.hpp>
#include <Swiften/Base/Log.h>
#include <Swiften/Queries/IQRouter.h>
#include <Swiften/FileTransfer/IBBRequest.h>
#include <Swiften/FileTransfer/BytestreamException.h>
#include <Swiften/Queries/SetResponder.h>
+#include <cassert>
+
namespace Swift {
class IBBReceiveSession::IBBResponder : public SetResponder<IBB> {
public:
IBBResponder(IBBReceiveSession* session, IQRouter* router) : SetResponder<IBB>(router), session(session), sequenceNumber(0), receivedSize(0) {
}
virtual bool handleSetRequest(const JID& from, const JID&, const std::string& id, IBB::ref ibb) {
if (from == session->from && ibb->getStreamID() == session->id) {
@@ -37,26 +39,29 @@ class IBBReceiveSession::IBBResponder : public SetResponder<IBB> {
}
}
else {
SWIFT_LOG(warning) << "Received data out of order" << std::endl;
sendError(from, id, ErrorPayload::NotAcceptable, ErrorPayload::Cancel);
session->finish(FileTransferError(FileTransferError::ClosedError));
}
}
else if (ibb->getAction() == IBB::Open) {
+ SWIFT_LOG(debug) << "IBB open received" << std::endl;
sendResponse(from, id, IBB::ref());
}
else if (ibb->getAction() == IBB::Close) {
+ SWIFT_LOG(debug) << "IBB close received" << std::endl;
sendResponse(from, id, IBB::ref());
session->finish(FileTransferError(FileTransferError::ClosedError));
}
return true;
}
+ SWIFT_LOG(debug) << "wrong from/sessionID: " << from << " == " << session->from << " / " <<ibb->getStreamID() << " == " << session->id << std::endl;
return false;
}
private:
IBBReceiveSession* session;
int sequenceNumber;
size_t receivedSize;
};
@@ -65,34 +70,38 @@ IBBReceiveSession::IBBReceiveSession(
const std::string& id,
const JID& from,
size_t size,
IQRouter* router) :
id(id),
from(from),
size(size),
router(router),
active(false) {
+ assert(!id.empty());
+ assert(from.isValid());
responder = new IBBResponder(this, router);
}
IBBReceiveSession::~IBBReceiveSession() {
if (active) {
SWIFT_LOG(warning) << "Session still active" << std::endl;
}
delete responder;
}
void IBBReceiveSession::start() {
+ SWIFT_LOG(debug) << "receive session started" << std::endl;
active = true;
responder->start();
}
void IBBReceiveSession::stop() {
+ SWIFT_LOG(debug) << "receive session stopped" << std::endl;
responder->stop();
if (active) {
if (router->isAvailable()) {
IBBRequest::create(from, IBB::createIBBClose(id), router)->send();
}
finish(boost::optional<FileTransferError>());
}
}