diff --git a/app/src/main/java/com/futo/platformplayer/Settings.kt b/app/src/main/java/com/futo/platformplayer/Settings.kt index b8e23283..e8f4f70a 100644 --- a/app/src/main/java/com/futo/platformplayer/Settings.kt +++ b/app/src/main/java/com/futo/platformplayer/Settings.kt @@ -681,6 +681,11 @@ class Settings : FragmentedStorageFileJson() { @Serializable(with = FlexibleBooleanSerializer::class) var allowIpv6: Boolean = true; + @AdvancedField + @FormField(R.string.allow_ipv4, FieldForm.TOGGLE, R.string.allow_ipv4_description, 5) + @Serializable(with = FlexibleBooleanSerializer::class) + var allowLinkLocalIpv4: Boolean = false; + /*TODO: Should we have a different casting quality? @FormField("Preferred Casting Quality", FieldForm.DROPDOWN, "", 3) @DropdownFieldOptionsId(R.array.preferred_quality_array) diff --git a/app/src/main/java/com/futo/platformplayer/casting/StateCasting.kt b/app/src/main/java/com/futo/platformplayer/casting/StateCasting.kt index b2c2156c..1e8e1830 100644 --- a/app/src/main/java/com/futo/platformplayer/casting/StateCasting.kt +++ b/app/src/main/java/com/futo/platformplayer/casting/StateCasting.kt @@ -1221,9 +1221,16 @@ class StateCasting { private fun getLocalUrl(ad: CastingDevice): String { var address = ad.localAddress!! - if (address.isLinkLocalAddress) { - address = findPreferredAddress() ?: address - Logger.i(TAG, "Selected casting address: $address") + if (Settings.instance.casting.allowLinkLocalIpv4) { + if (address.isLinkLocalAddress && address is Inet6Address) { + address = findPreferredAddress() ?: address + Logger.i(TAG, "Selected casting address: $address") + } + } else { + if (address.isLinkLocalAddress) { + address = findPreferredAddress() ?: address + Logger.i(TAG, "Selected casting address: $address") + } } return "http://${address.toUrlAddress().trim('/')}:${_castServer.port}"; } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e2b7d730..b2513e21 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -76,6 +76,8 @@ Always proxy requests when casting data through the device. Allow IPV6 If casting over IPV6 is allowed, can cause issues on some networks + Allow Link Local IPV4 + If casting over IPV4 link local is allowed, can cause issues on some networks Discover Find new video sources to add These sources have been disabled