diff --git a/src/mirall/propagator_qnam.cpp b/src/mirall/propagator_qnam.cpp index 530d8d4c6..978497524 100644 --- a/src/mirall/propagator_qnam.cpp +++ b/src/mirall/propagator_qnam.cpp @@ -87,7 +87,11 @@ void PUTFileJob::slotTimeout() { void PollJob::start() { setTimeout(30 * 1000); - setReply(davRequest("GET", path())); + QUrl accountUrl = account()->url(); + QUrl finalUrl = QUrl::fromUserInput(accountUrl.scheme() + QLatin1String("://") + accountUrl.authority() + + (path().startsWith('/') ? QLatin1String("") : QLatin1Literal("/")) + path()); + setReply(getRequest(finalUrl)); + setupConnections(reply()); connect(reply(), SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(resetTimeout())); AbstractNetworkJob::start(); } @@ -99,7 +103,14 @@ bool PollJob::finished() _item._httpErrorCode = reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); _item._status = classifyError(err, _item._httpErrorCode); _item._errorString = reply()->errorString(); - if (_item._status == SyncFileItem::FatalError || int(_item._httpErrorCode / 100) == 4) { + if (_item._status == SyncFileItem::FatalError || _item._httpErrorCode >= 400) { + if (_item._status != SyncFileItem::FatalError) { + SyncJournalDb::PollInfo info; + info._file = _item._file; + // no info._url removes it from the database + _journal->setPollInfo(info); + + } emit finishedSignal(); return true; } @@ -122,7 +133,7 @@ bool PollJob::finished() } _item._errorString = status["error"].toString(); - _item._status = _item._errorString.isEmpty() ? SyncFileItem::NormalError : SyncFileItem::Success; + _item._status = _item._errorString.isEmpty() ? SyncFileItem::Success : SyncFileItem::NormalError; _item._fileId = status["fileid"].toByteArray(); _item._etag = status["etag"].toByteArray(); _item._responseTimeStamp = responseTimestamp(); @@ -350,7 +361,7 @@ void PropagateUploadFileQNAM::slotPutFinished() _item._httpErrorCode = job->reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); // The server needs some time to process the request and provide with a poll URL if (_item._httpErrorCode == 202) { - QString path = QString::fromUtf8(QByteArray::fromPercentEncoding(job->reply()->rawHeader("OC-Finish-Poll"))); + QString path = QString::fromUtf8(job->reply()->rawHeader("OC-Finish-Poll")); if (path.isEmpty()) { _propagator->_activeJobs--; done(SyncFileItem::NormalError, tr("Poll URL missing")); @@ -461,6 +472,7 @@ void PropagateUploadFileQNAM::startPollJob(const QString& path) info._url = path; info._modtime = _item._modtime; _propagator->_journal->setPollInfo(info); + job->start(); } void PropagateUploadFileQNAM::slotPollFinished() diff --git a/src/mirall/propagator_qnam.h b/src/mirall/propagator_qnam.h index 14a12048f..3ad15c3de 100644 --- a/src/mirall/propagator_qnam.h +++ b/src/mirall/propagator_qnam.h @@ -96,6 +96,7 @@ public: void slotTimeout() Q_DECL_OVERRIDE { // emit finishedSignal(false); // deleteLater(); + qDebug() << Q_FUNC_INFO; reply()->abort(); } diff --git a/src/mirall/syncjournaldb.cpp b/src/mirall/syncjournaldb.cpp index fdd7811e9..10a9535bd 100644 --- a/src/mirall/syncjournaldb.cpp +++ b/src/mirall/syncjournaldb.cpp @@ -834,10 +834,10 @@ QVector< SyncJournalDb::PollInfo > SyncJournalDb::getPollInfos() QVector< SyncJournalDb::PollInfo > res; - if( checkConnect() ) + if( !checkConnect() ) return res; - QSqlQuery query("SELECT path, mtime, pollpath FROM poll",_db); + QSqlQuery query("SELECT path, modtime, pollpath FROM poll",_db); if (!query.exec()) { QString err = query.lastError().text(); @@ -851,7 +851,11 @@ QVector< SyncJournalDb::PollInfo > SyncJournalDb::getPollInfos() info._modtime = query.value(1).toLongLong(); info._url = query.value(2).toString(); res.append(info); + qDebug() << "§§§§§§§§§§§§§§§§" << info._file << info._url; } + + qDebug() << "§§§§§§§§§-*-*-*§§§§§§§" << res.count(); + query.finish(); return res; } @@ -863,7 +867,7 @@ void SyncJournalDb::setPollInfo(const SyncJournalDb::PollInfo& info) return; } - if (info._file.isEmpty()) { + if (info._url.isEmpty()) { QSqlQuery query("DELETE FROM poll WHERE path=?", _db); query.bindValue(0, info._file); if( !query.exec() ) { @@ -872,7 +876,7 @@ void SyncJournalDb::setPollInfo(const SyncJournalDb::PollInfo& info) qDebug() << query.executedQuery() << info._file; } } else { - QSqlQuery query("INSERT OR REPLACE INTO poll (path, mtime, pollpath) VALUES( ? , ? , ? )", _db); + QSqlQuery query("INSERT OR REPLACE INTO poll (path, modtime, pollpath) VALUES( ? , ? , ? )", _db); query.bindValue(0, info._file); query.bindValue(1, QString::number(info._modtime)); query.bindValue(2, info._url);