Skip to content

Commit 63a33aa

Browse files
authored
🐛 Add network interface fallback to ensure service discovery starts (#3679)
1 parent 7637a5d commit 63a33aa

1 file changed

Lines changed: 22 additions & 11 deletions

File tree

app/src/desktopMain/kotlin/com/crosspaste/net/DesktopNetworkInterfaceService.kt

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,26 +40,37 @@ class DesktopNetworkInterfaceService(
4040
config.useNetworkInterfaces,
4141
)
4242
if (config.enableDiscovery && useNetworkInterfaces.isEmpty()) {
43-
val preferredInterface = getPreferredNetworkInterface()
44-
if (preferredInterface != null) {
45-
val useNetworkInterfacesJson =
46-
jsonUtils.JSON.encodeToString(listOf(preferredInterface.name))
47-
configManager.updateConfig("useNetworkInterfaces", useNetworkInterfacesJson)
48-
}
43+
autoSelectAndSavePreferredInterface()?.let { return it }
4944
}
50-
return createNetworkInterfaceInfos(
51-
configManager.getCurrentConfig().useNetworkInterfaces,
52-
)
45+
46+
val allNetworkInterfaceInfos = getAllNetworkInterfaceInfo()
47+
48+
val interfaceInfos = allNetworkInterfaceInfos.filter { it.name in useNetworkInterfaces }
49+
50+
if (interfaceInfos.isEmpty() && allNetworkInterfaceInfos.isNotEmpty()) {
51+
autoSelectAndSavePreferredInterface()?.let { return it }
52+
}
53+
54+
return interfaceInfos
5355
}
5456

57+
private fun autoSelectAndSavePreferredInterface(): List<NetworkInterfaceInfo>? =
58+
getPreferredNetworkInterface()?.let {
59+
val useNetworkInterfacesJson =
60+
jsonUtils.JSON.encodeToString(listOf(it.name))
61+
configManager.updateConfig("useNetworkInterfaces", useNetworkInterfacesJson)
62+
63+
listOf(it)
64+
}
65+
5566
private fun createNetworkInterfaceInfos(useNetworkInterfacesJson: String): List<NetworkInterfaceInfo> {
5667
val useNetworkInterfaces =
5768
jsonUtils.JSON.decodeFromString<List<String>>(
5869
useNetworkInterfacesJson,
5970
)
6071

61-
val networkInterfaceInfos = getAllNetworkInterfaceInfo()
72+
val allNetworkInterfaceInfos = getAllNetworkInterfaceInfo()
6273

63-
return networkInterfaceInfos.filter { it.name in useNetworkInterfaces }
74+
return allNetworkInterfaceInfos.filter { it.name in useNetworkInterfaces }
6475
}
6576
}

0 commit comments

Comments
 (0)