diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index e3ddc7900a393..ff24e58d70e22 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -1141,7 +1141,12 @@ void ProcessDirectoryJob::processFileAnalyzeLocalInfo( } else if (dbEntry._type == ItemTypeVirtualFileDehydration || localEntry.type == ItemTypeVirtualFileDehydration) { item->_direction = SyncFileItem::Down; item->_instruction = CSYNC_INSTRUCTION_SYNC; - item->_type = ItemTypeVirtualFileDehydration; + const auto pinState = _discoveryData->_syncOptions._vfs->pinState(path._local); + if (FileSystem::isLnkFile(path._local) && !_discoveryData->_syncOptions._vfs->pinState(path._local).isValid()) { + item->_type = ItemTypeVirtualFileDownload; + } else { + item->_type = ItemTypeVirtualFileDehydration; + } } else if (!serverModified && (dbEntry._inode != localEntry.inode || (localEntry.isMetadataMissing && item->_type == ItemTypeFile && !FileSystem::isLnkFile(item->_file))