diff options
-rw-r--r-- | src/libsystemd-network/sd-dhcp-client.c | 3 | ||||
-rw-r--r-- | src/libsystemd-network/sd-dhcp-lease.c | 4 | ||||
-rw-r--r-- | src/libsystemd-network/test-dhcp-client.c | 11 |
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); |