summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Swiften/FileTransfer/IncomingJingleFileTransfer.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/Swiften/FileTransfer/IncomingJingleFileTransfer.cpp b/Swiften/FileTransfer/IncomingJingleFileTransfer.cpp
index a0cd47c..98ad4d3 100644
--- a/Swiften/FileTransfer/IncomingJingleFileTransfer.cpp
+++ b/Swiften/FileTransfer/IncomingJingleFileTransfer.cpp
@@ -137,13 +137,13 @@ void IncomingJingleFileTransfer::handleSessionInfoReceived(JinglePayload::ref ji
if (transferHash) {
SWIFT_LOG(debug) << "Received hash information." << std::endl;
waitOnHashTimer->stop();
if (transferHash->getFileInfo().getHashes().find("sha-1") != transferHash->getFileInfo().getHashes().end()) {
hashes["sha-1"] = transferHash->getFileInfo().getHash("sha-1").get();
}
- else if (transferHash->getFileInfo().getHashes().find("md5") != transferHash->getFileInfo().getHashes().end()) {
+ if (transferHash->getFileInfo().getHashes().find("md5") != transferHash->getFileInfo().getHashes().end()) {
hashes["md5"] = transferHash->getFileInfo().getHash("md5").get();
}
if (state == WaitingForHash) {
checkHashAndTerminate();
}
}
@@ -183,15 +183,15 @@ void IncomingJingleFileTransfer::checkHashAndTerminate() {
}
}
void IncomingJingleFileTransfer::checkIfAllDataReceived() {
if (receivedBytes == getFileSizeInBytes()) {
SWIFT_LOG(debug) << "All data received." << std::endl;
- bool hashInfoAvailable = true;
+ bool hashInfoAvailable = false;
foreach(const JingleFileTransferFileInfo::HashElementMap::value_type& hashElement, hashes) {
- hashInfoAvailable &= !hashElement.second.empty();
+ hashInfoAvailable |= !hashElement.second.empty();
}
if (!hashInfoAvailable) {
SWIFT_LOG(debug) << "No hash information yet. Waiting a while on hash info." << std::endl;
setState(WaitingForHash);
waitOnHashTimer->start();
@@ -311,12 +311,13 @@ FileTransfer::State::Type IncomingJingleFileTransfer::getExternalState(State sta
}
void IncomingJingleFileTransfer::stopAll() {
if (state != Initial) {
writeStreamDataReceivedConnection.disconnect();
delete hashCalculator;
+ hashCalculator = NULL;
}
switch (state) {
case Initial: break;
case GeneratingInitialLocalCandidates: transporter->stopGeneratingLocalCandidates(); break;
case TryingCandidates: transporter->stopTryingRemoteCandidates(); break;
case WaitingForFallbackOrTerminate: break;
@@ -330,12 +331,13 @@ void IncomingJingleFileTransfer::stopAll() {
transportSession.reset();
break;
case Finished: SWIFT_LOG(warning) << "Already finished" << std::endl; break;
}
if (state != Initial) {
delete transporter;
+ transporter = NULL;
}
}
bool IncomingJingleFileTransfer::hasPriorityOnCandidateTie() const {
return false;
}