diff options
-rw-r--r-- | src/mirall/propagator_qnam.cpp | 16 | ||||
-rw-r--r-- | src/mirall/propagator_qnam.h | 2 | ||||
-rw-r--r-- | src/mirall/propagatorjobs.cpp | 6 |
3 files changed, 14 insertions, 10 deletions
diff --git a/src/mirall/propagator_qnam.cpp b/src/mirall/propagator_qnam.cpp index 67afa0099..c24507ba7 100644 --- a/src/mirall/propagator_qnam.cpp +++ b/src/mirall/propagator_qnam.cpp @@ -288,8 +288,6 @@ void PropagateUploadFileQNAM::slotPutFinished() return; } - _propagator->_activeJobs--; - // the file id should only be empty for new files up- or downloaded QByteArray fid = job->reply()->rawHeader("OC-FileID"); if( !fid.isEmpty() ) { @@ -307,16 +305,22 @@ void PropagateUploadFileQNAM::slotPutFinished() // Normaly Owncloud 6 always put X-OC-MTime qDebug() << "Server do not support X-OC-MTime"; PropagatorJob *newJob = new UpdateMTimeAndETagJob(_propagator, _item); - QObject::connect(newJob, SIGNAL(completed(SyncFileItem)), this, SLOT(finalize())); + QObject::connect(newJob, SIGNAL(completed(SyncFileItem)), this, SLOT(finalize(SyncFileItem))); QMetaObject::invokeMethod(newJob, "start"); return; } - finalize(); + finalize(_item); } - -void PropagateUploadFileQNAM::finalize() +void PropagateUploadFileQNAM::finalize(const SyncFileItem ©) { + // Normally, copy == _item, but when it comes from the UpdateMTimeAndETagJob, we need to do + // some updates + _item._etag = copy._etag; + _item._fileId = copy._fileId; + + _propagator->_activeJobs--; + _item._requestDuration = _duration.elapsed(); _propagator->_journal->setFileRecord(SyncJournalFileRecord(_item, _propagator->_localDir + _item._file)); diff --git a/src/mirall/propagator_qnam.h b/src/mirall/propagator_qnam.h index d5fa45148..4936d2ddc 100644 --- a/src/mirall/propagator_qnam.h +++ b/src/mirall/propagator_qnam.h @@ -91,7 +91,7 @@ private slots: void slotUploadProgress(qint64,qint64); void abort(); void startNextChunk(); - void finalize(); + void finalize(const Mirall::SyncFileItem&); }; diff --git a/src/mirall/propagatorjobs.cpp b/src/mirall/propagatorjobs.cpp index 660aec33a..85c47f568 100644 --- a/src/mirall/propagatorjobs.cpp +++ b/src/mirall/propagatorjobs.cpp @@ -324,9 +324,9 @@ bool PropagateNeonJob::updateErrorFromSession(int neon_code, ne_request* req, in void UpdateMTimeAndETagJob::start() { - QScopedPointer<char, QScopedPointerPodDeleter> uri2( - ne_path_escape((_propagator->_remoteDir + _item._renameTarget).toUtf8())); - if (!updateMTimeAndETag(uri2.data(), _item._modtime)) + QScopedPointer<char, QScopedPointerPodDeleter> uri( + ne_path_escape((_propagator->_remoteDir + _item._file).toUtf8())); + if (!updateMTimeAndETag(uri.data(), _item._modtime)) return; done(SyncFileItem::Success); } |