|
3 | 3 | // SPDX-License-Identifier: Apache-2.0 |
4 | 4 |
|
5 | 5 | use std::{ |
6 | | - collections::{BTreeMap, BTreeSet}, |
| 6 | + collections::{BTreeMap, BTreeSet, HashSet}, |
7 | 7 | net::Ipv4Addr, |
8 | 8 | ops::Deref, |
9 | 9 | sync::{Arc, Mutex, MutexGuard}, |
@@ -528,41 +528,36 @@ fn start_zt_domain_watch_task(proxy: Proxy) { |
528 | 528 | let kv_store = proxy.kv_store.clone(); |
529 | 529 | let certbot = proxy.certbot.clone(); |
530 | 530 |
|
531 | | - // Track known domains to detect additions |
532 | | - let known_domains: std::sync::Arc<std::sync::Mutex<std::collections::HashSet<String>>> = |
533 | | - std::sync::Arc::new(std::sync::Mutex::new( |
534 | | - kv_store |
535 | | - .list_zt_domain_configs() |
536 | | - .into_iter() |
537 | | - .map(|c| c.domain) |
538 | | - .collect(), |
539 | | - )); |
540 | | - |
541 | 531 | let mut rx = kv_store.watch_zt_domain_configs(); |
542 | 532 | tokio::spawn(async move { |
| 533 | + // Track known domains to detect additions |
| 534 | + let mut known_domains = kv_store |
| 535 | + .list_zt_domain_configs() |
| 536 | + .into_iter() |
| 537 | + .map(|c| c.domain) |
| 538 | + .collect::<HashSet<_>>(); |
| 539 | + |
543 | 540 | loop { |
544 | 541 | if rx.changed().await.is_err() { |
545 | 542 | break; |
546 | 543 | } |
547 | 544 |
|
548 | 545 | // Get current domains |
549 | | - let current_domains: std::collections::HashSet<String> = kv_store |
| 546 | + let current_domains: HashSet<String> = kv_store |
550 | 547 | .list_zt_domain_configs() |
551 | 548 | .into_iter() |
552 | 549 | .map(|c| c.domain) |
553 | 550 | .collect(); |
554 | 551 |
|
555 | 552 | // Find newly added domains |
556 | | - let mut known = known_domains.lock().unwrap(); |
557 | 553 | let new_domains: Vec<String> = current_domains |
558 | 554 | .iter() |
559 | | - .filter(|d| !known.contains(*d)) |
| 555 | + .filter(|d| !known_domains.contains(*d)) |
560 | 556 | .cloned() |
561 | 557 | .collect(); |
562 | 558 |
|
563 | 559 | // Update known domains |
564 | | - *known = current_domains; |
565 | | - drop(known); |
| 560 | + known_domains = current_domains; |
566 | 561 |
|
567 | 562 | // Trigger renewal for new domains |
568 | 563 | for domain in new_domains { |
|
0 commit comments