diff options
| author | Alexandr Akulich <akulichalexander@gmail.com> | 2015-10-11 02:29:01 +0500 |
|---|---|---|
| committer | Alexandr Akulich <akulichalexander@gmail.com> | 2015-10-27 19:49:42 +0500 |
| commit | 032c2c0a886a5b66d0460e6c4ddad1fd6c99f72b (patch) | |
| tree | a62e72b3c56214851c292b249c24714ed18c5761 /src/client/QXmppTransferManager.cpp | |
| parent | b6876733ba4d49d99269a290c170b1c3716e35d4 (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.cpp | 5 |
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; } |
