summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2020-01-27 21:44:36 +0100
committerBeniamino Galvani <bgalvani@redhat.com>2020-01-30 09:08:58 +0100
commite1bd45f7b932334b5e24975fe578222bcc4b34bf (patch)
tree5dfe94dfbcb61ccb85f326327735acadf72b36e8
parent66124b4a4375fababc20a7a06f204d589f096fb9 (diff)
downloadNetworkManager-e1bd45f7b932334b5e24975fe578222bcc4b34bf.tar.gz
n-dhcp4: move back to INIT after lease expires
Move back to INIT state after the lease expires, as per section 4.4.5 of RFC 2131. Previously the client just moved to EXPIRED, closed the connection and cleared the probe, leaving to the caller of the library the choice to create a new client instance and to start from scratch. However, it seems more useful that the client, once initialized, always tries to get a lease even after an expiration.
-rw-r--r--shared/n-dhcp4/src/n-dhcp4-c-probe.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/shared/n-dhcp4/src/n-dhcp4-c-probe.c b/shared/n-dhcp4/src/n-dhcp4-c-probe.c
index f4962d6995..bfead036bd 100644
--- a/shared/n-dhcp4/src/n-dhcp4-c-probe.c
+++ b/shared/n-dhcp4/src/n-dhcp4-c-probe.c
@@ -841,11 +841,10 @@ static int n_dhcp4_client_probe_transition_lifetime(NDhcp4ClientProbe *probe) {
return r;
c_assert(probe->client->current_probe == probe);
- probe->client->current_probe = NULL;
-
- n_dhcp4_c_connection_close(&probe->connection);
+ probe->current_lease = n_dhcp4_client_lease_unref(probe->current_lease);
- probe->state = N_DHCP4_CLIENT_PROBE_STATE_EXPIRED;
+ probe->state = N_DHCP4_CLIENT_PROBE_STATE_INIT;
+ probe->ns_deferred = n_dhcp4_gettime(CLOCK_BOOTTIME) + UINT64_C(1);
break;