summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-10-09 15:10:05 +0200
committerMarkus Pettersson <markus.pettersson@mullvad.net>2024-11-22 17:42:38 +0100
commit0906502c3150df8417cc8ce7350fd780cb439470 (patch)
tree5a2cd51d888bfd275162b2346209e7668372a7af
parent848ddea38dcd93a1cf1575f87f8fada316dff590 (diff)
downloadmullvadvpn-0906502c3150df8417cc8ce7350fd780cb439470.tar.xz
mullvadvpn-0906502c3150df8417cc8ce7350fd780cb439470.zip
Fix socket function in wireguard-go
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt2
-rw-r--r--talpid-wireguard/src/wireguard_go/mod.rs16
-rw-r--r--wireguard-go-rs/libwg/libwg_android.go19
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