aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppTransferManager.cpp
diff options
context:
space:
mode:
authorAlexandr Akulich <akulichalexander@gmail.com>2015-10-11 02:29:01 +0500
committerAlexandr Akulich <akulichalexander@gmail.com>2015-10-27 19:49:42 +0500
commit032c2c0a886a5b66d0460e6c4ddad1fd6c99f72b (patch)
treea62e72b3c56214851c292b249c24714ed18c5761 /src/client/QXmppTransferManager.cpp
parentb6876733ba4d49d99269a290c170b1c3716e35d4 (diff)
QXmppTransferManager: Close only devices which we opened.
sendFile() method expects the device to be opened, but QXmppTransferJob::terminate() closes the dev unconditionaly, which breaks reusable QIODevice workflow. Introduce a private boolean variable saying "we created this device".
Diffstat (limited to 'src/client/QXmppTransferManager.cpp')
-rw-r--r--src/client/QXmppTransferManager.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/client/QXmppTransferManager.cpp b/src/client/QXmppTransferManager.cpp
index 0784279e..d0741511 100644
--- a/src/client/QXmppTransferManager.cpp
+++ b/src/client/QXmppTransferManager.cpp
@@ -204,6 +204,7 @@ public:
QString requestId;
QXmppTransferJob::State state;
QTime transferStart;
+ bool deviceIsOwn;
// file meta-data
QXmppTransferFileInfo fileInfo;
@@ -225,6 +226,7 @@ QXmppTransferJobPrivate::QXmppTransferJobPrivate()
iodevice(0),
method(QXmppTransferJob::NoMethod),
state(QXmppTransferJob::OfferState),
+ deviceIsOwn(false),
ibbSequence(0),
socksSocket(0)
{
@@ -426,7 +428,7 @@ void QXmppTransferJob::terminate(QXmppTransferJob::Error cause)
d->state = FinishedState;
// close IO device
- if (d->iodevice)
+ if (d->iodevice && d->deviceIsOwn)
d->iodevice->close();
// close socket
@@ -1332,6 +1334,7 @@ QXmppTransferJob *QXmppTransferManager::sendFile(const QString &jid, const QStri
// create job
QXmppTransferJob *job = sendFile(jid, device, fileInfo);
job->setLocalFileUrl(QUrl::fromLocalFile(filePath));
+ job->d->deviceIsOwn = true;
return job;
}