diff --git a/rs/src/management/http_client.rs b/rs/src/management/http_client.rs index 68d60e8a..30610140 100644 --- a/rs/src/management/http_client.rs +++ b/rs/src/management/http_client.rs @@ -569,32 +569,26 @@ fn create_full_user_agent(user_agent: &str) -> String { let pkg_version = PKG_VERSION.unwrap_or("unknown"); let os = os_info::get(); let os_info = format!("{}: {} {}", "OS", os.os_type(), os.version()); - let mut windows_partner_id: Option = None; + + let mut full_user_agent = format!( + "{}{}{} ({}", + user_agent, " Dev-Tunnels-Service-Rust-SDK/", pkg_version, os_info + ); + #[cfg(windows)] { use winreg::enums::*; use winreg::RegKey; let hklm = RegKey::predef(HKEY_LOCAL_MACHINE); let key = hklm.open_subkey("SOFTWARE\\Microsoft\\Windows365"); - windows_partner_id = key.and_then(|k| k.get_value("PartnerId")).ok(); + if let Ok(id) = key.and_then(|k| k.get_value::("PartnerId")) { + full_user_agent.push_str(" Windows-Partner-Id: "); + full_user_agent.push_str(&id); + } } - let mut full_user_agent = format!( - "{}{}{} ({})", - user_agent, " Dev-Tunnels-Service-Rust-SDK/", pkg_version, os_info - ); + full_user_agent.push(')'); - if let Some(id) = &windows_partner_id { - let windows_partner_id_str = format!("Windows-Partner-Id: {}", id); - full_user_agent = format!( - "{}{}{} ({}; {})", - user_agent, - " Dev-Tunnels-Service-Rust-SDK/", - pkg_version, - os_info, - windows_partner_id_str - ); - } full_user_agent } diff --git a/rs/src/management/policy_provider.rs b/rs/src/management/policy_provider.rs index 211c108d..52b2845f 100644 --- a/rs/src/management/policy_provider.rs +++ b/rs/src/management/policy_provider.rs @@ -1,15 +1,20 @@ use std::io; -pub const REGISTRY_KEY_PATH: &str = r"Software\Policies\Microsoft\Tunnels"; - #[cfg(target_os = "windows")] pub fn get_policy_header_value() -> io::Result> { use urlencoding::encode; use winreg::enums::*; use winreg::RegKey; + pub const REGISTRY_KEY_PATH: &str = r"Software\Policies\Microsoft\Tunnels"; + let hklm = RegKey::predef(HKEY_LOCAL_MACHINE); - let sub_key = hklm.open_subkey(REGISTRY_KEY_PATH)?; + let sub_key = match hklm.open_subkey(REGISTRY_KEY_PATH) { + Ok(sub_key) => sub_key, + Err(e) if e.kind() == io::ErrorKind::NotFound => return Ok(None), + Err(e) => return Err(e), + }; + let mut header_values = vec![]; for (name, value) in sub_key.enum_values().filter_map(Result::ok) {