]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-dhcp6-client: disable event source when client is stopped or freed
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 6 Feb 2022 13:35:17 +0000 (22:35 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 14 Feb 2022 05:43:45 +0000 (14:43 +0900)
src/libsystemd-network/sd-dhcp6-client.c

index 03b1c918df95897889097d8edd7b3a5327a1b22d..ff7e04bbdc6670bc1a873f60fc1c2b05f6009bf1 100644 (file)
@@ -589,8 +589,7 @@ static void client_reset(sd_dhcp6_client *client) {
 
         client->lease = sd_dhcp6_lease_unref(client->lease);
 
-        client->receive_message =
-                sd_event_source_unref(client->receive_message);
+        client->receive_message = sd_event_source_disable_unref(client->receive_message);
 
         client->transaction_id = 0;
         client->transaction_start = 0;
@@ -1497,12 +1496,13 @@ sd_event *sd_dhcp6_client_get_event(sd_dhcp6_client *client) {
 static sd_dhcp6_client *dhcp6_client_free(sd_dhcp6_client *client) {
         assert(client);
 
-        client->timeout_resend = sd_event_source_unref(client->timeout_resend);
-        client->timeout_resend_expire = sd_event_source_unref(client->timeout_resend_expire);
-        client->timeout_t1 = sd_event_source_unref(client->timeout_t1);
-        client->timeout_t2 = sd_event_source_unref(client->timeout_t2);
+        sd_dhcp6_lease_unref(client->lease);
 
-        client_reset(client);
+        sd_event_source_disable_unref(client->receive_message);
+        sd_event_source_disable_unref(client->timeout_resend);
+        sd_event_source_disable_unref(client->timeout_resend_expire);
+        sd_event_source_disable_unref(client->timeout_t1);
+        sd_event_source_disable_unref(client->timeout_t2);
 
         client->fd = safe_close(client->fd);