From ab98eaed4dd1e6fce3f99f8a6548c4296238e3b1 Mon Sep 17 00:00:00 2001 From: Xnick417x Date: Fri, 3 Jul 2026 23:38:33 +0000 Subject: [PATCH] Fix: emit up link-local NIC fallback when device is offline Offline, the guest received a down, all-zero adapter (address/netmask 0) which boot-time adapter enumeration could dereference and crash on. Emit an up link-local interface instead so iphlpapi always exposes a valid NIC. --- .../environment/components/NetworkHelper.java | 13 +++++++++++++ .../components/NetworkInfoUpdateComponent.java | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/src/main/runtime/display/environment/components/NetworkHelper.java b/app/src/main/runtime/display/environment/components/NetworkHelper.java index 6d69c3738..1c3a12d3d 100644 --- a/app/src/main/runtime/display/environment/components/NetworkHelper.java +++ b/app/src/main/runtime/display/environment/components/NetworkHelper.java @@ -92,6 +92,19 @@ public static String formatNetmask(int prefixLength) { } } + /** + * Adapter reported to Wine when Android has no active network. Represents an + * up link-local interface so iphlpapi never hands the guest a down, all-zero + * adapter (which some games dereference blindly during boot enumeration). + */ + public static IFAddress offlineFallback() { + IFAddress ifAddress = new IFAddress(); + ifAddress.flags = OsConstants.IFF_UP | OsConstants.IFF_RUNNING; + ifAddress.address = "169.254.1.2"; + ifAddress.netmask = "255.255.0.0"; + return ifAddress; + } + public boolean isConnected() { NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo == null) return false; diff --git a/app/src/main/runtime/display/environment/components/NetworkInfoUpdateComponent.java b/app/src/main/runtime/display/environment/components/NetworkInfoUpdateComponent.java index af2bdd529..59d3c6741 100644 --- a/app/src/main/runtime/display/environment/components/NetworkInfoUpdateComponent.java +++ b/app/src/main/runtime/display/environment/components/NetworkInfoUpdateComponent.java @@ -64,7 +64,7 @@ public void updateIFAddrsFile(List ifAddresses) { content.append(ifAddress.toString()); } } else { - content.append(new NetworkHelper.IFAddress().toString()); + content.append(NetworkHelper.offlineFallback().toString()); } FileUtils.writeString(file, content.toString()); }