From: Yu Watanabe Date: Sun, 6 Feb 2022 20:21:31 +0000 (+0900) Subject: sd-dhcp6-client: stop IO event source when client entered bound state X-Git-Tag: v251-rc1~291^2~19 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6f8ff34218be17a485534cce1712c80e2ce599d4;p=thirdparty%2Fsystemd.git sd-dhcp6-client: stop IO event source when client entered bound state Also when the client receives a reply when running in information requesting mode. --- diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c index f90e81f85a8..e6eecbbe368 100644 --- a/src/libsystemd-network/sd-dhcp6-client.c +++ b/src/libsystemd-network/sd-dhcp6-client.c @@ -1051,6 +1051,7 @@ static int client_enter_bound_state(sd_dhcp6_client *client) { DHCP6_STATE_RENEW, DHCP6_STATE_REBIND)); + (void) event_source_disable(client->receive_message); (void) event_source_disable(client->timeout_resend); r = dhcp6_lease_get_lifetime(client->lease, &lifetime_t1, &lifetime_t2, &lifetime_valid); @@ -1152,6 +1153,8 @@ static int client_process_information( sd_dhcp6_lease_unref(client->lease); client->lease = TAKE_PTR(lease); + /* Do not call client_stop() here, as it frees the acquired lease. */ + (void) event_source_disable(client->receive_message); (void) event_source_disable(client->timeout_resend); client_set_state(client, DHCP6_STATE_STOPPED); @@ -1346,8 +1349,6 @@ static int client_receive_message( case DHCP6_STATE_BOUND: case DHCP6_STATE_STOPPED: - return 0; - default: assert_not_reached(); }