netdev/wireguard: do not invalidate peer on invalid syntax
We would say "ignoring", but invalidate the peer anyway. Let's only do that if we modified the peer irreperably. Also add comments explaining allocation handling.
This commit is contained in:
parent
de7fef4b6e
commit
44e9342078
|
@ -573,7 +573,7 @@ int config_parse_wireguard_preshared_key(
|
|||
void *data,
|
||||
void *userdata) {
|
||||
|
||||
_cleanup_(wireguard_peer_free_or_set_invalidp) WireguardPeer *peer = NULL;
|
||||
WireguardPeer *peer;
|
||||
Wireguard *w;
|
||||
int r;
|
||||
|
||||
|
@ -585,12 +585,7 @@ int config_parse_wireguard_preshared_key(
|
|||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = wireguard_decode_key_and_warn(rvalue, peer->preshared_key, unit, filename, line, lvalue);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
TAKE_PTR(peer);
|
||||
return 0;
|
||||
return wireguard_decode_key_and_warn(rvalue, peer->preshared_key, unit, filename, line, lvalue);
|
||||
}
|
||||
|
||||
int config_parse_wireguard_preshared_key_file(
|
||||
|
@ -759,10 +754,6 @@ int config_parse_wireguard_endpoint(
|
|||
w = WIREGUARD(data);
|
||||
assert(w);
|
||||
|
||||
r = wireguard_peer_new_static(w, filename, section_line, &peer);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (rvalue[0] == '[') {
|
||||
begin = &rvalue[1];
|
||||
end = strchr(rvalue, ']');
|
||||
|
@ -794,6 +785,10 @@ int config_parse_wireguard_endpoint(
|
|||
++end;
|
||||
}
|
||||
|
||||
r = wireguard_peer_new_static(w, filename, section_line, &peer);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = free_and_strndup(&peer->endpoint_host, begin, len);
|
||||
if (r < 0)
|
||||
return log_oom();
|
||||
|
@ -805,7 +800,7 @@ int config_parse_wireguard_endpoint(
|
|||
r = set_ensure_put(&w->peers_with_unresolved_endpoint, NULL, peer);
|
||||
if (r < 0)
|
||||
return log_oom();
|
||||
TAKE_PTR(peer);
|
||||
TAKE_PTR(peer); /* The peer may already have been in the hash map, that is fine too. */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -822,7 +817,7 @@ int config_parse_wireguard_keepalive(
|
|||
void *data,
|
||||
void *userdata) {
|
||||
|
||||
_cleanup_(wireguard_peer_free_or_set_invalidp) WireguardPeer *peer = NULL;
|
||||
WireguardPeer *peer;
|
||||
uint16_t keepalive = 0;
|
||||
Wireguard *w;
|
||||
int r;
|
||||
|
@ -843,15 +838,13 @@ int config_parse_wireguard_keepalive(
|
|||
r = safe_atou16(rvalue, &keepalive);
|
||||
if (r < 0) {
|
||||
log_syntax(unit, LOG_ERR, filename, line, r,
|
||||
"The persistent keepalive interval must be 0-65535. Ignore assignment: %s",
|
||||
"Failed to parse \"%s\" as keepalive interval (range 0–65535), ignoring assignment: %m",
|
||||
rvalue);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
peer->persistent_keepalive_interval = keepalive;
|
||||
|
||||
TAKE_PTR(peer);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue