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))