fix(mobile): Add DHCP polling to fix Android VPN startup failure (#1628)

This commit is contained in:
Mg Pig
2025-12-01 01:13:05 +08:00
committed by GitHub
parent bb82b3a5b0
commit ae6d929f4a
3 changed files with 63 additions and 2 deletions
+10 -1
View File
@@ -7,6 +7,7 @@ const EVENTS = Object.freeze({
PRE_RUN_NETWORK_INSTANCE: 'pre_run_network_instance',
POST_RUN_NETWORK_INSTANCE: 'post_run_network_instance',
VPN_SERVICE_STOP: 'vpn_service_stop',
DHCP_IP_CHANGED: 'dhcp_ip_changed',
});
function onSaveConfigs(event: Event<NetworkTypes.NetworkConfig[]>) {
@@ -30,15 +31,23 @@ async function onVpnServiceStop(event: Event<string>) {
await onNetworkInstanceChange(event.payload);
}
async function onDhcpIpChanged(event: Event<string>) {
console.log(`Received event '${EVENTS.DHCP_IP_CHANGED}' for instance: ${event.payload}`);
if (type() === 'android') {
await onNetworkInstanceChange(event.payload);
}
}
export async function listenGlobalEvents() {
const unlisteners = [
await listen(EVENTS.SAVE_CONFIGS, onSaveConfigs),
await listen(EVENTS.PRE_RUN_NETWORK_INSTANCE, onPreRunNetworkInstance),
await listen(EVENTS.POST_RUN_NETWORK_INSTANCE, onPostRunNetworkInstance),
await listen(EVENTS.VPN_SERVICE_STOP, onVpnServiceStop),
await listen(EVENTS.DHCP_IP_CHANGED, onDhcpIpChanged),
];
return () => {
unlisteners.forEach(unlisten => unlisten());
};
}
}