diff options
| author | David Lönnhager <david.l@mullvad.net> | 2025-04-07 15:54:28 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2025-04-07 15:54:28 +0200 |
| commit | 666455314b4339d7ee5200e750bf0c67631373a0 (patch) | |
| tree | 0a7e8686ba71ebc3a0b0ed7ab309be146c553119 /mullvad-masque-proxy/src/server | |
| parent | 775bfa0a419f1b44f03a906855dab85a85c71137 (diff) | |
| parent | ba8d1374b6eb59fbb3bd2fa243ae66c361651db9 (diff) | |
| download | mullvadvpn-666455314b4339d7ee5200e750bf0c67631373a0.tar.xz mullvadvpn-666455314b4339d7ee5200e750bf0c67631373a0.zip | |
Merge branch 'add-masque-test'
Diffstat (limited to 'mullvad-masque-proxy/src/server')
| -rw-r--r-- | mullvad-masque-proxy/src/server/mod.rs | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/mullvad-masque-proxy/src/server/mod.rs b/mullvad-masque-proxy/src/server/mod.rs index 4abc810a4d..710edaa537 100644 --- a/mullvad-masque-proxy/src/server/mod.rs +++ b/mullvad-masque-proxy/src/server/mod.rs @@ -19,11 +19,14 @@ use tokio::{net::UdpSocket, time::interval}; use crate::fragment::{self, Fragments}; -#[derive(Debug)] +#[derive(Debug, thiserror::Error)] pub enum Error { - BadTlsConfig(quinn::crypto::rustls::NoInitialCipherSuite), - BindSocket(io::Error), - SendNegotiationResponse(h3::Error), + #[error("Bad TLS config")] + BadTlsConfig(#[source] quinn::crypto::rustls::NoInitialCipherSuite), + #[error("Failed to bind server socket")] + BindSocket(#[source] io::Error), + #[error("Failed to send negotiation response")] + SendNegotiationResponse(#[source] h3::Error), } pub type Result<T> = std::result::Result<T, Error>; @@ -69,6 +72,10 @@ impl Server { }) } + pub fn local_addr(&self) -> io::Result<SocketAddr> { + self.endpoint.local_addr() + } + pub async fn run(self) -> Result<()> { while let Some(new_connection) = self.endpoint.accept().await { tokio::spawn(Self::handle_incoming_connection( @@ -164,7 +171,7 @@ impl Server { client_send = connection.read_datagram() => { match client_send { Ok(Some(received_packet)) => { - handle_client_packet(received_packet, stream_id, &mut fragments, &udp_socket, target_addr).await; + handle_client_packet(received_packet, stream_id, &mut fragments, &udp_socket).await; }, Ok(None) => { return; @@ -224,7 +231,6 @@ async fn handle_client_packet( stream_id: StreamId, fragments: &mut Fragments, proxy_socket: &UdpSocket, - target_addr: SocketAddr, ) { if received_packet.stream_id() != stream_id { // log::trace!("Received unexpected stream ID from server"); @@ -232,7 +238,7 @@ async fn handle_client_packet( } if let Ok(Some(payload)) = fragments.handle_incoming_packet(received_packet.into_payload()) { - let _ = proxy_socket.send_to(&payload, target_addr).await; + let _ = proxy_socket.send(&payload).await; } } |
