summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJoakim Hulthe <joakim.hulthe@mullvad.net>2025-04-07 11:32:47 +0200
committerJoakim Hulthe <joakim.hulthe@mullvad.net>2025-04-07 11:32:47 +0200
commit1a5ed3c15097dad14976fb51243cbf54c8456b47 (patch)
treef49eeff37e005d51f9033e08620543f8d69e0144
parentd6696d5f403189f87b29838663269662bc477568 (diff)
parent31d919788fd2aef21f4d18a68c82a552ea7ecaa9 (diff)
downloadmullvadvpn-1a5ed3c15097dad14976fb51243cbf54c8456b47.tar.xz
mullvadvpn-1a5ed3c15097dad14976fb51243cbf54c8456b47.zip
Merge branch 'masque-fix-fragmentation'
-rw-r--r--mullvad-masque-proxy/src/client/mod.rs25
-rw-r--r--mullvad-masque-proxy/src/server/mod.rs10
2 files changed, 11 insertions, 24 deletions
diff --git a/mullvad-masque-proxy/src/client/mod.rs b/mullvad-masque-proxy/src/client/mod.rs
index 21c806c6cd..4fd7ee5729 100644
--- a/mullvad-masque-proxy/src/client/mod.rs
+++ b/mullvad-masque-proxy/src/client/mod.rs
@@ -246,25 +246,12 @@ impl Client {
// log::trace!("Received datagram with an unexpected stream ID");
continue;
}
- let mut payload = response.into_payload();
- let context = VarInt::decode(&mut payload);
- match context {
- Ok(crate::HTTP_MASQUE_DATAGRAM_CONTEXT_ID) => {
- self.client_socket
- .send_to(payload.as_ref(), return_addr)
- .await
- .map_err(Error::ClientWrite)?;
- }
- Ok(crate::HTTP_MASQUE_FRAGMENTED_DATAGRAM_CONTEXT_ID) => {
- if let Ok(Some(payload)) = self.fragments.handle_incoming_packet(payload) {
- self.client_socket
- .send_to(payload.chunk(), return_addr)
- .await
- .map_err(Error::ClientWrite)?;
- }
- },
- _ => (),
-
+ let payload = response.into_payload();
+ if let Ok(Some(payload)) = self.fragments.handle_incoming_packet(payload) {
+ self.client_socket
+ .send_to(payload.chunk(), return_addr)
+ .await
+ .map_err(Error::ClientWrite)?;
}
}
Ok(None) => {
diff --git a/mullvad-masque-proxy/src/server/mod.rs b/mullvad-masque-proxy/src/server/mod.rs
index 4f39cce305..4abc810a4d 100644
--- a/mullvad-masque-proxy/src/server/mod.rs
+++ b/mullvad-masque-proxy/src/server/mod.rs
@@ -33,7 +33,7 @@ const MASQUE_WELL_KNOWN_PATH: &str = "/.well-known/masque/udp/";
pub struct Server {
endpoint: Endpoint,
allowed_hosts: AllowedIps,
- max_packet_size: u16,
+ maximum_packet_size: u16,
}
#[derive(Clone)]
@@ -52,7 +52,7 @@ impl Server {
bind_addr: SocketAddr,
allowed_hosts: HashSet<IpAddr>,
tls_config: Arc<rustls::ServerConfig>,
- max_packet_size: u16,
+ maximum_packet_size: u16,
) -> Result<Self> {
let server_config = quinn::ServerConfig::with_crypto(Arc::new(
QuicServerConfig::try_from(tls_config).map_err(Error::BadTlsConfig)?,
@@ -65,7 +65,7 @@ impl Server {
allowed_hosts: AllowedIps {
hosts: Arc::new(allowed_hosts),
},
- max_packet_size,
+ maximum_packet_size,
})
}
@@ -74,7 +74,7 @@ impl Server {
tokio::spawn(Self::handle_incoming_connection(
new_connection,
self.allowed_hosts.clone(),
- self.max_packet_size,
+ self.maximum_packet_size,
));
}
Ok(())
@@ -184,7 +184,7 @@ impl Server {
let mut received_packet = proxy_recv_buf.split().freeze();
- if proxy_recv_buf.len() < maximum_packet_size.into() {
+ if received_packet.len() < maximum_packet_size.into() {
if connection.send_datagram(stream_id, received_packet).is_err() {
return;
}