From: Yu Watanabe Date: Sun, 6 Feb 2022 18:19:40 +0000 (+0900) Subject: sd-dhcp6-client: merge client_start() and client_reset() X-Git-Tag: v251-rc1~291^2~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=af2b484141029f6ca261575648aaa8d314973a9f;p=thirdparty%2Fsystemd.git sd-dhcp6-client: merge client_start() and client_reset() --- diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c index 70eeb722324..5a046414d7d 100644 --- a/src/libsystemd-network/sd-dhcp6-client.c +++ b/src/libsystemd-network/sd-dhcp6-client.c @@ -584,16 +584,14 @@ static void client_notify(sd_dhcp6_client *client, int event) { client->callback(client, event, client->userdata); } -static void client_reset(sd_dhcp6_client *client) { - assert(client); +static void client_stop(sd_dhcp6_client *client, int error) { + DHCP6_CLIENT_DONT_DESTROY(client); - client->lease = sd_dhcp6_lease_unref(client->lease); + assert(client); - client->transaction_id = 0; - client->transaction_start = 0; + client_notify(client, error); - client->retransmit_time = 0; - client->retransmit_count = 0; + client->lease = sd_dhcp6_lease_unref(client->lease); (void) event_source_disable(client->receive_message); (void) event_source_disable(client->timeout_resend); @@ -604,16 +602,6 @@ static void client_reset(sd_dhcp6_client *client) { client->state = DHCP6_STATE_STOPPED; } -static void client_stop(sd_dhcp6_client *client, int error) { - DHCP6_CLIENT_DONT_DESTROY(client); - - assert(client); - - client_notify(client, error); - - client_reset(client); -} - static int client_append_common_options_in_managed_mode( sd_dhcp6_client *client, uint8_t **opt, @@ -1388,7 +1376,9 @@ int sd_dhcp6_client_start(sd_dhcp6_client *client) { if (!client->information_request && client->request_ia == 0) return -EINVAL; - client_reset(client); + /* Even if the client is in the STOPPED state, the lease acquired in the previous information + * request may be stored. */ + client->lease = sd_dhcp6_lease_unref(client->lease); r = client_ensure_iaid(client); if (r < 0)