summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libsystemd-network/sd-dhcp-client.c3
-rw-r--r--src/libsystemd-network/sd-dhcp-lease.c4
-rw-r--r--src/libsystemd-network/test-dhcp-client.c11
3 files changed, 14 insertions, 4 deletions
diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c
index c67de71dd3..489220326e 100644
--- a/src/libsystemd-network/sd-dhcp-client.c
+++ b/src/libsystemd-network/sd-dhcp-client.c
@@ -805,6 +805,7 @@ static int client_handle_offer(sd_dhcp_client *client, DHCPMessage *offer,
}
}
+ sd_dhcp_lease_unref(client->lease);
client->lease = lease;
lease = NULL;
@@ -1330,6 +1331,8 @@ sd_dhcp_client *sd_dhcp_client_unref(sd_dhcp_client *client) {
sd_dhcp_client_detach_event(client);
+ sd_dhcp_lease_unref(client->lease);
+
free(client->req_opts);
free(client);
diff --git a/src/libsystemd-network/sd-dhcp-lease.c b/src/libsystemd-network/sd-dhcp-lease.c
index 159bb502c8..aa479ffe15 100644
--- a/src/libsystemd-network/sd-dhcp-lease.c
+++ b/src/libsystemd-network/sd-dhcp-lease.c
@@ -271,7 +271,7 @@ int dhcp_lease_parse_options(uint8_t code, uint8_t len, const uint8_t *option,
}
int dhcp_lease_new(sd_dhcp_lease **ret) {
- _cleanup_dhcp_lease_unref_ sd_dhcp_lease *lease = NULL;
+ sd_dhcp_lease *lease;
lease = new0(sd_dhcp_lease, 1);
if (!lease)
@@ -280,8 +280,6 @@ int dhcp_lease_new(sd_dhcp_lease **ret) {
lease->n_ref = REFCNT_INIT;
*ret = lease;
- lease = NULL;
-
return 0;
}
diff --git a/src/libsystemd-network/test-dhcp-client.c b/src/libsystemd-network/test-dhcp-client.c
index 9c316d75bc..e7787fa0f1 100644
--- a/src/libsystemd-network/test-dhcp-client.c
+++ b/src/libsystemd-network/test-dhcp-client.c
@@ -29,6 +29,8 @@
#include "util.h"
#include "socket-util.h"
+#include "sd-event.h"
+#include "event-util.h"
#include "dhcp-protocol.h"
#include "dhcp-internal.h"
@@ -109,6 +111,8 @@ static void test_request_basic(sd_event *e)
assert_se(sd_dhcp_client_set_request_option(client, 33) == -EEXIST);
assert_se(sd_dhcp_client_set_request_option(client, 44) == 0);
assert_se(sd_dhcp_client_set_request_option(client, 33) == -EEXIST);
+
+ sd_dhcp_client_unref(client);
}
static void test_checksum(void)
@@ -373,6 +377,7 @@ static void test_addr_acq_acquired(sd_dhcp_client *client, int event,
if (verbose)
printf(" DHCP address acquired\n");
+ sd_dhcp_lease_unref(lease);
sd_event_exit(e, 0);
}
@@ -485,7 +490,11 @@ static void test_addr_acq(sd_event *e) {
}
int main(int argc, char *argv[]) {
- sd_event *e;
+ _cleanup_event_unref_ sd_event *e;
+
+ log_set_max_level(LOG_DEBUG);
+ log_parse_environment();
+ log_open();
assert_se(sd_event_new(&e) >= 0);