reject active_connection_id_limit values lower than 2
diff --git a/src/lib.rs b/src/lib.rs
index c94adde..8c40463 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -3579,7 +3579,7 @@
ack_delay_exponent: 3,
max_ack_delay: 25,
disable_active_migration: false,
- active_conn_id_limit: 0,
+ active_conn_id_limit: 2,
}
}
}
@@ -3695,7 +3695,13 @@
},
0x000e => {
- tp.active_conn_id_limit = val.get_varint()?;
+ let limit = val.get_varint()?;
+
+ if limit < 2 {
+ return Err(Error::InvalidTransportParam);
+ }
+
+ tp.active_conn_id_limit = limit;
},
// Ignore unknown parameters.
@@ -3736,8 +3742,8 @@
b.put_varint(tp.max_idle_timeout)?;
}
- if let Some(ref token) = tp.stateless_reset_token {
- if is_server {
+ if is_server {
+ if let Some(ref token) = tp.stateless_reset_token {
TransportParams::encode_param(&mut b, 0x0002, token.len())?;
b.put_bytes(&token)?;
}
@@ -3830,7 +3836,7 @@
// TODO: encode preferred_address
- if tp.active_conn_id_limit != 0 {
+ if tp.active_conn_id_limit != 2 {
TransportParams::encode_param(
&mut b,
0x000e,