From: Yu Watanabe Date: Wed, 21 Aug 2024 01:24:44 +0000 (+0900) Subject: sd-dhcp-client: stop client without calling notification after sending RELEASE X-Git-Tag: v257-rc1~665^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2bb7559ade518bb0f27ec6d0212ddb8bcc470677;p=thirdparty%2Fsystemd.git sd-dhcp-client: stop client without calling notification after sending RELEASE Otherwise, even the acquired lease is released, the client may be in e.g. BOUND state or so, and may send renew or rebind after timeout later. --- diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c index 94ad5bbea95..1a1499fa2c9 100644 --- a/src/libsystemd-network/sd-dhcp-client.c +++ b/src/libsystemd-network/sd-dhcp-client.c @@ -2223,7 +2223,11 @@ int sd_dhcp_client_send_release(sd_dhcp_client *client) { log_dhcp_client(client, "RELEASE"); - return 0; + /* This function is mostly called when stopping daemon. Hence, do not call client_stop() or + * client_restart(). Otherwise, the notification callback will be called again and we may easily + * enter an infinite loop. */ + client_initialize(client); + return 1; /* sent and stopped. */ } int sd_dhcp_client_send_decline(sd_dhcp_client *client) {