fix: tunnel dying some time after a network handover (#5994)

This commit is contained in:
vemneyy authored and GitHub committed 2026-08-02 10:35:36 +08:00
1 parent 83abd61a7b
commit 0cf95ac8a3
1 file changed
+1 -18
@@ -250,7 +250,7 @@ object CoreServiceManager {
if (!isRunning()) return false
return try {
val tunFd = tunFdForCore()
val tunFd = currentVpnInterface
isReloading = true
LogUtil.i(AppConfig.TAG, "StartCore-Manager: Core reload start...")
@@ -270,23 +270,6 @@ object CoreServiceManager {
}
}
/**
* Returns the tun descriptor to hand to the core on a reload.
*
* With hev-socks5-tunnel the core is started without a tun and never touches the descriptor.
* Otherwise it closes the one it was given when it stops, which would take the VPN interface
* down, so it gets a duplicate to close instead.
*/
private fun tunFdForCore(): ParcelFileDescriptor? {
val vpnInterface = currentVpnInterface ?: return null
return try {
if (SettingsManager.isUsingHevTun()) vpnInterface else vpnInterface.dup()
} catch (e: Exception) {
LogUtil.e(AppConfig.TAG, "StartCore-Manager: Failed to duplicate VPN interface", e)
throw e
}
}
/**
* Queries and resets all outbound traffic counters in one core call.
* Go side format: tag,direction,value;tag,direction,value;