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