Early data option

This commit is contained in:
Pascal Engélibert 2026-01-08 11:03:16 +01:00
commit dc2819e028
2 changed files with 19 additions and 7 deletions

View file

@ -105,7 +105,18 @@ pub async fn play(
.dangerous() .dangerous()
.with_custom_certificate_verifier(Arc::new(DummyCertVerifier)) .with_custom_certificate_verifier(Arc::new(DummyCertVerifier))
.with_no_client_auth(); .with_no_client_auth();
config.resumption = Resumption::disabled(); let mut enable_early_data = false;
for (var, val) in std::env::vars() {
match var.as_str() {
"EARLYDATA" => enable_early_data = val == "1",
_ => {}
}
}
if enable_early_data {
config.enable_early_data = true;
} else {
config.resumption = Resumption::disabled();
}
let config = Arc::new(config); let config = Arc::new(config);
for (id, (server_name, records)) in records.iter() { for (id, (server_name, records)) in records.iter() {
let connector = TlsConnector::from(config.clone()); let connector = TlsConnector::from(config.clone());

View file

@ -59,9 +59,10 @@ pub async fn play(
match tls_mode { match tls_mode {
TlsMode::Both | TlsMode::Server => { TlsMode::Both | TlsMode::Server => {
let mut resolver = ResolvesServerCertUsingSni::new(); let mut resolver = ResolvesServerCertUsingSni::new();
let config = tokio_rustls::rustls::ServerConfig::builder() let mut config = tokio_rustls::rustls::ServerConfig::builder()
.with_no_client_auth() .with_no_client_auth()
.with_cert_resolver(Arc::new(ResolvesServerCertUsingSni::new())); .with_cert_resolver(Arc::new(ResolvesServerCertUsingSni::new()));
config.max_early_data_size = 8192;
for file in std::fs::read_dir(cert_path).unwrap_or_else(|e| { for file in std::fs::read_dir(cert_path).unwrap_or_else(|e| {
panic!("Cannot read certificate directory `{cert_path}`: {e:?}") panic!("Cannot read certificate directory `{cert_path}`: {e:?}")
}) { }) {
@ -126,11 +127,11 @@ pub async fn play(
// Config requires resolver, keys can be added to resolver, creating a key requires config. WTF!? // Config requires resolver, keys can be added to resolver, creating a key requires config. WTF!?
// So we have to re-create config. // So we have to re-create config.
let config = Arc::new( let mut config = tokio_rustls::rustls::ServerConfig::builder()
tokio_rustls::rustls::ServerConfig::builder() .with_no_client_auth()
.with_no_client_auth() .with_cert_resolver(Arc::new(resolver));
.with_cert_resolver(Arc::new(resolver)), config.max_early_data_size = 8192;
); let config = Arc::new(config);
let listener = TcpListener::bind(listen_addr).await.unwrap(); let listener = TcpListener::bind(listen_addr).await.unwrap();
sync_sender.send(()).unwrap(); sync_sender.send(()).unwrap();