From: Yu Watanabe Date: Sun, 6 Feb 2022 13:22:38 +0000 (+0900) Subject: sd-dhcp6-client: stop client on error in client state transition X-Git-Tag: v251-rc1~291^2~45 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4db6334c9a6174bbc1ba4060c8c46d6c918812cb;p=thirdparty%2Fsystemd.git sd-dhcp6-client: stop client on error in client state transition --- diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c index 3cdaf491561..dfb0b2c65fc 100644 --- a/src/libsystemd-network/sd-dhcp6-client.c +++ b/src/libsystemd-network/sd-dhcp6-client.c @@ -1056,13 +1056,7 @@ static int client_process_information( client->lease = TAKE_PTR(lease); client_notify(client, SD_DHCP6_CLIENT_EVENT_INFORMATION_REQUEST); - r = client_set_state(client, DHCP6_STATE_STOPPED); - if (r < 0) { - client_stop(client, r); - return r; - } - - return 0; + return client_set_state(client, DHCP6_STATE_STOPPED); } static int client_process_reply( @@ -1089,10 +1083,8 @@ static int client_process_reply( client->lease = TAKE_PTR(lease); r = client_set_state(client, DHCP6_STATE_BOUND); - if (r < 0) { - client_stop(client, r); + if (r < 0) return r; - } client_notify(client, SD_DHCP6_CLIENT_EVENT_IP_ACQUIRE); return 0; @@ -1135,10 +1127,8 @@ static int client_process_advertise_or_rapid_commit_reply( client->lease = TAKE_PTR(lease); r = client_set_state(client, DHCP6_STATE_BOUND); - if (r < 0) { - client_stop(client, r); + if (r < 0) return r; - } client_notify(client, SD_DHCP6_CLIENT_EVENT_IP_ACQUIRE); return 0; @@ -1162,10 +1152,8 @@ static int client_process_advertise_or_rapid_commit_reply( if (pref_advertise == 255 || client->retransmit_count > 1) { r = client_set_state(client, DHCP6_STATE_REQUEST); - if (r < 0) { - client_stop(client, r); + if (r < 0) return r; - } } return 0; @@ -1397,8 +1385,8 @@ static int client_set_state(sd_dhcp6_client *client, DHCP6State state) { return 0; - error: - client_reset(client); +error: + client_stop(client, r); return r; }