handle last peer error case [CI SKIP]
This commit is contained in:
parent
88b68a1de9
commit
6a13b27c19
@ -33,9 +33,11 @@ impl WireguardController for Userspace {
|
||||
let value_as_num = || parse_err(value.parse::<u64>());
|
||||
let mut peer: Option<Peer> = None;
|
||||
let build_peer = |peer: &mut Option<Peer>, builder: &mut PeerBuilder| -> Result<()> {
|
||||
let built: Result<Peer> = parse_err(builder.build());
|
||||
*peer = Some(built?);
|
||||
*builder = PeerBuilder::default();
|
||||
if builder.has_key() {
|
||||
let built: Result<Peer> = parse_err(builder.build());
|
||||
*peer = Some(built?);
|
||||
*builder = PeerBuilder::default();
|
||||
}
|
||||
Ok(())
|
||||
};
|
||||
let mut add_key = |peer: &mut Option<Peer>, key: ECCKey| -> Result<()> {
|
||||
@ -50,7 +52,15 @@ impl WireguardController for Userspace {
|
||||
match key.as_ref() {
|
||||
"" => {
|
||||
//Empty line means end of data
|
||||
build_peer(&mut peer, builder); //TODO: handle possible actual error case
|
||||
build_peer(&mut peer, builder).map_err(|err| {
|
||||
Error::new(
|
||||
ErrorKind::InvalidData,
|
||||
format!(
|
||||
"Protocol error, wireguard supplied insufficent data: {}",
|
||||
err
|
||||
),
|
||||
)
|
||||
})?; //TODO: handle possible actual error case
|
||||
}
|
||||
"public_key" => {
|
||||
add_key(&mut peer, parse_err(ECCKey::from_hex(value))?)?;
|
||||
|
@ -194,6 +194,10 @@ impl PeerBuilder {
|
||||
self.validate().is_ok()
|
||||
}
|
||||
|
||||
pub fn has_key(&self) -> bool {
|
||||
self.key.is_some()
|
||||
}
|
||||
|
||||
pub fn add_allowed_ip(&mut self, ip: (IpAddr, u8)) {
|
||||
if let Some(ref mut ips) = &mut self.allowed_ips {
|
||||
ips.push(ip);
|
||||
|
Loading…
x
Reference in New Issue
Block a user