diff --git a/url/src/lib.rs b/url/src/lib.rs index ad3c89001..3d6326c7d 100644 --- a/url/src/lib.rs +++ b/url/src/lib.rs @@ -1770,6 +1770,9 @@ impl Url { pub fn set_port(&mut self, mut port: Option) -> Result<(), ()> { // has_host implies !cannot_be_a_base if !self.has_host() || self.host() == Some(Host::Domain("")) || self.scheme() == "file" { + if port.is_none() { + return Ok(()); + } return Err(()); } if port.is_some() && port == parser::default_port(self.scheme()) { @@ -2088,6 +2091,9 @@ impl Url { pub fn set_password(&mut self, password: Option<&str>) -> Result<(), ()> { // has_host implies !cannot_be_a_base if !self.has_host() || self.host() == Some(Host::Domain("")) || self.scheme() == "file" { + if password.is_none() || password == Some("") { + return Ok(()); + } return Err(()); } let password = password.unwrap_or_default(); @@ -2182,6 +2188,9 @@ impl Url { pub fn set_username(&mut self, username: &str) -> Result<(), ()> { // has_host implies !cannot_be_a_base if !self.has_host() || self.host() == Some(Host::Domain("")) || self.scheme() == "file" { + if username.is_empty() { + return Ok(()); + } return Err(()); } let username_start = self.scheme_end + 3;