| 508 | } |
| 509 | |
| 510 | fn insert_tls13_ticket( |
| 511 | &self, |
| 512 | server_name: ServerName<'static>, |
| 513 | value: rustls::client::Tls13ClientSessionValue, |
| 514 | ) { |
| 515 | // Store in inner cache for actual resumption (Rustls handles this) |
| 516 | self.inner.insert_tls13_ticket(server_name.clone(), value); |
| 517 | |
| 518 | // Record metadata in Python-accessible cache |
| 519 | // NOTE: We can't access value.ticket or value.lifetime_secs (private fields) |
| 520 | // So we use default values |
| 521 | let creation_time = SystemTime::now(); |
| 522 | let server_name_str = server_name.to_str(); |
| 523 | let session_data = SessionData { |
| 524 | server_name: server_name_str.to_string(), |
| 525 | session_id: generate_session_id_from_metadata( |
| 526 | server_name_str.as_ref(), |
| 527 | &creation_time, |
| 528 | ), |
| 529 | creation_time, |
| 530 | lifetime: 7200, // Default TLS 1.3 ticket lifetime (Rustls uses this) |
| 531 | }; |
| 532 | |
| 533 | let key = server_name_str.as_bytes().to_vec(); |
| 534 | self.session_cache |
| 535 | .write() |
| 536 | .insert(key, Arc::new(ParkingMutex::new(session_data))); |
| 537 | } |
| 538 | |
| 539 | fn take_tls13_ticket( |
| 540 | &self, |