diff options
author | Lennart Poettering <lennart@poettering.net> | 2015-08-27 12:53:43 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2015-08-27 12:53:43 +0200 |
commit | dce391e78f5d8d5f4feb3eb6a15436de12dacf46 (patch) | |
tree | dca5b9de132240ac3743dbcfcc7b81e87ca57adc /src/network | |
parent | 21b80ad126c1aa43bd6d0e5a7ed3cc7c0f10efb0 (diff) |
networkd: properly reset transient hostname when we lose a DHCP lease
Previously we were setting the transient hostname again, rather than
resetting it.
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/networkd-dhcp4.c | 24 | ||||
-rw-r--r-- | src/network/networkd-link.c | 3 |
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 */ |