summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2015-08-27 12:53:43 +0200
committerLennart Poettering <lennart@poettering.net>2015-08-27 12:53:43 +0200
commitdce391e78f5d8d5f4feb3eb6a15436de12dacf46 (patch)
treedca5b9de132240ac3743dbcfcc7b81e87ca57adc
parent21b80ad126c1aa43bd6d0e5a7ed3cc7c0f10efb0 (diff)
networkd: properly reset transient hostname when we lose a DHCP lease
Previously we were setting the transient hostname again, rather than resetting it.
-rw-r--r--src/network/networkd-dhcp4.c24
-rw-r--r--src/network/networkd-link.c3
2 files changed, 12 insertions, 15 deletions
diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c
index 4e2936f637..a075015c3c 100644
--- a/src/network/networkd-dhcp4.c
+++ b/src/network/networkd-dhcp4.c
@@ -270,18 +270,16 @@ static int dhcp_lease_lost(Link *link) {
if (link->network->dhcp_hostname) {
const char *hostname = NULL;
- if (!link->network->hostname)
- r = sd_dhcp_lease_get_hostname(link->dhcp_lease, &hostname);
- else
+ if (link->network->hostname)
hostname = link->network->hostname;
+ else
+ (void) sd_dhcp_lease_get_hostname(link->dhcp_lease, &hostname);
- if (r >= 0 || hostname) {
- r = link_set_hostname(link, hostname);
+ if (hostname) {
+ /* If a hostname was set due to the lease, then unset it now. */
+ r = link_set_hostname(link, NULL);
if (r < 0)
- log_link_error_errno(link, r,
- "Failed to set transient hostname to '%s': %m",
- hostname);
-
+ log_link_warning_errno(link, r, "Failed to reset transient hostname: %m");
}
}
@@ -470,12 +468,12 @@ static int dhcp_lease_acquired(sd_dhcp_client *client, Link *link) {
if (link->network->dhcp_hostname) {
const char *hostname = NULL;
- if (!link->network->hostname)
- r = sd_dhcp_lease_get_hostname(lease, &hostname);
- else
+ if (link->network->hostname)
hostname = link->network->hostname;
+ else
+ (void) sd_dhcp_lease_get_hostname(lease, &hostname);
- if (r >= 0 || hostname) {
+ if (hostname) {
r = link_set_hostname(link, hostname);
if (r < 0)
log_link_error_errno(link, r, "Failed to set transient hostname to '%s': %m", hostname);
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index 371136a11e..5af82059d8 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -801,9 +801,8 @@ int link_set_hostname(Link *link, const char *hostname) {
assert(link);
assert(link->manager);
- assert(hostname);
- log_link_debug(link, "Setting transient hostname: '%s'", hostname);
+ log_link_debug(link, "Setting transient hostname: '%s'", strna(hostname));
if (!link->manager->bus) {
/* TODO: replace by assert when we can rely on kdbus */