diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index 4a9f656a4712..8f8dcecec31c 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -390,7 +390,11 @@ void OCC::SyncEngine::slotItemDiscovered(const OCC::SyncFileItemPtr &item) } if (item->_type == CSyncEnums::ItemTypeVirtualFile) { - if (item->_locked == SyncFileItem::LockStatus::LockedItem && (item->_lockOwnerType != SyncFileItem::LockOwnerType::TokenLock || item->_lockOwnerId != account()->davUser())) { + const auto lockOwnerTypeToSkipReadonly = _account->capabilities().filesLockTypeAvailable() + ? SyncFileItem::LockOwnerType::TokenLock + : SyncFileItem::LockOwnerType::UserLock; + if (item->_locked == SyncFileItem::LockStatus::LockedItem + && (item->_lockOwnerType != lockOwnerTypeToSkipReadonly || item->_lockOwnerId != account()->davUser())) { qCDebug(lcEngine()) << filePath << "file is locked: making it read only"; FileSystem::setFileReadOnly(filePath, true); } else { diff --git a/src/libsync/syncfileitem.cpp b/src/libsync/syncfileitem.cpp index 6bf10cd7af1b..a7fd1c7d53e9 100644 --- a/src/libsync/syncfileitem.cpp +++ b/src/libsync/syncfileitem.cpp @@ -219,8 +219,8 @@ SyncFileItemPtr SyncFileItem::fromProperties(const QString &filePath, const QMap const auto intConvertedValue = properties.value(QStringLiteral("lock-timeout")).toULongLong(&ok); item->_lockTimeout = ok ? intConvertedValue : 0; } - - const auto date = QDateTime::fromString(properties.value(QStringLiteral("getlastmodified")), Qt::RFC2822Date); + const auto lastModifiedValue = properties.value(QStringLiteral("getlastmodified")).replace("GMT", "+0000"); + const auto date = QDateTime::fromString(lastModifiedValue, Qt::RFC2822Date); Q_ASSERT(date.isValid()); if (date.toSecsSinceEpoch() > 0) { item->_modtime = date.toSecsSinceEpoch();