diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2024-10-09 15:10:05 +0200 |
|---|---|---|
| committer | Markus Pettersson <markus.pettersson@mullvad.net> | 2024-11-22 17:42:38 +0100 |
| commit | 0906502c3150df8417cc8ce7350fd780cb439470 (patch) | |
| tree | 5a2cd51d888bfd275162b2346209e7668372a7af | |
| parent | 848ddea38dcd93a1cf1575f87f8fada316dff590 (diff) | |
| download | mullvadvpn-0906502c3150df8417cc8ce7350fd780cb439470.tar.xz mullvadvpn-0906502c3150df8417cc8ce7350fd780cb439470.zip | |
Fix socket function in wireguard-go
3 files changed, 30 insertions, 7 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt index c63da68471..c36f10212e 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt @@ -66,7 +66,6 @@ import com.ramcosta.composedestinations.result.NavResult import com.ramcosta.composedestinations.result.ResultBackNavigator import com.ramcosta.composedestinations.result.ResultRecipient import com.ramcosta.composedestinations.spec.DestinationSpec -import java.io.FileDescriptor import kotlinx.coroutines.launch import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.compose.cell.FilterRow @@ -754,7 +753,6 @@ private fun EditCustomListBottomSheet( onDeleteCustomList: (item: RelayItem.CustomList) -> Unit, closeBottomSheet: (animate: Boolean) -> Unit, ) { - FileDescriptor.out. MullvadModalBottomSheet( backgroundColor = backgroundColor, onBackgroundColor = onBackgroundColor, diff --git a/talpid-wireguard/src/wireguard_go/mod.rs b/talpid-wireguard/src/wireguard_go/mod.rs index 5caab06d09..e94f786fd1 100644 --- a/talpid-wireguard/src/wireguard_go/mod.rs +++ b/talpid-wireguard/src/wireguard_go/mod.rs @@ -129,6 +129,22 @@ impl WgGoTunnel { logging_context.0, ) .map_err(|e| TunnelError::FatalStartWireguardError(Box::new(e)))?; + + + Self::bypass_tunnel_sockets(&handle, &mut tunnel_device) + .map_err(TunnelError::BypassError)?; + + return Ok(WgGoTunnel { + interface_name, + tunnel_handle: handle, + _tunnel_device: tunnel_device, + _logging_context: logging_context, + tun_provider: tun_provider_clone, + #[cfg(daita)] + resource_dir: resource_dir.to_owned(), + #[cfg(daita)] + config: config.clone(), + }); } let handle = wireguard_go_rs::Tunnel::turn_on( diff --git a/wireguard-go-rs/libwg/libwg_android.go b/wireguard-go-rs/libwg/libwg_android.go index 98599ba701..a439bce3fb 100644 --- a/wireguard-go-rs/libwg/libwg_android.go +++ b/wireguard-go-rs/libwg/libwg_android.go @@ -138,23 +138,24 @@ func wgTurnOnMultihop(cExitSettings *C.char, cEntrySettings *C.char, privateIp * singleTunMtu := mtu - 80 //Internet mtu - Wireguard header size - ipv4 UDP header singletun := multihoptun.NewMultihopTun(ip, exitEndpoint.Addr(), exitEndpoint.Port(), singleTunMtu) - entryDevice := device.NewDevice(tunDevice, singletun.Binder(), logger) + entryDevice := device.NewDevice(&singletun, conn.NewStdNetBind(), logger) + exitDevice := device.NewDevice(tunDevice, singletun.Binder(), logger) setErr := entryDevice.IpcSetOperation(bufio.NewReader(strings.NewReader(entrySettings))) if setErr != nil { logger.Errorf("%s\n", setErr) + exitDevice.Close() entryDevice.Close() return ERROR_INTERMITTENT_FAILURE } entryDevice.DisableSomeRoamingForBrokenMobileSemantics() - exitDevice := device.NewDevice(&singletun, conn.NewStdNetBind(), logger) - setErr = exitDevice.IpcSetOperation(bufio.NewReader(strings.NewReader(exitSettings))) if setErr != nil { logger.Errorf("%s\n", setErr) exitDevice.Close() + entryDevice.Close() return ERROR_INTERMITTENT_FAILURE } @@ -317,7 +318,11 @@ func wgGetSocketV4(tunnelHandle int32) C.int32_t { if err != nil { return ERROR_UNKNOWN_TUNNEL } - peek := tunnel.Device.Bind().(conn.PeekLookAtSocketFd) + device := tunnel.EntryDevice + if device == nil { + device = tunnel.Device + } + peek := device.Bind().(conn.PeekLookAtSocketFd) fd, err := peek.PeekLookAtSocketFd4() if err != nil { return ERROR_GENERAL_FAILURE @@ -331,7 +336,11 @@ func wgGetSocketV6(tunnelHandle int32) C.int32_t { if err != nil { return ERROR_UNKNOWN_TUNNEL } - peek := tunnel.Device.Bind().(conn.PeekLookAtSocketFd) + device := tunnel.EntryDevice + if device == nil { + device = tunnel.Device + } + peek := device.Bind().(conn.PeekLookAtSocketFd) fd, err := peek.PeekLookAtSocketFd6() if err != nil { return ERROR_GENERAL_FAILURE |
