chiark / gitweb /
sd-dhcp-client: return NULL from _unref() like the other sd-* libraries
[elogind.git] / src / libsystemd-network / sd-dhcp6-client.c
index 01d9ec454f01dde54728cbe8d33815fdc777ba88..97a2ba7ea9ba57ca8a9e173fd2d6dccb8876a29b 100644 (file)
@@ -153,15 +153,13 @@ static sd_dhcp6_client *client_notify(sd_dhcp6_client *client, int event) {
         return client;
 }
 
-static int client_initialize(sd_dhcp6_client *client)
-{
+static int client_reset(sd_dhcp6_client *client) {
         assert_return(client, -EINVAL);
 
         client->receive_message =
                 sd_event_source_unref(client->receive_message);
 
-        if (client->fd > 0)
-                client->fd = safe_close(client->fd);
+        client->fd = safe_close(client->fd);
 
         client->transaction_id = 0;
 
@@ -186,7 +184,7 @@ static sd_dhcp6_client *client_stop(sd_dhcp6_client *client, int error) {
 
         client = client_notify(client, error);
         if (client)
-                client_initialize(client);
+                client_reset(client);
 
         return client;
 }
@@ -312,7 +310,7 @@ static int client_timeout_resend(sd_event_source *s, uint64_t usec,
         sd_dhcp6_client *client = userdata;
         usec_t time_now, init_retransmit_time, max_retransmit_time;
         usec_t max_retransmit_duration;
-        uint8_t max_retransmit_count;
+        uint8_t max_retransmit_count = 0;
         char time_string[FORMAT_TIMESPAN_MAX];
 
         assert(s);
@@ -436,7 +434,7 @@ static int client_ensure_iaid(sd_dhcp6_client *client) {
         if (detect_container(NULL) <= 0) {
                 /* not in a container, udev will be around */
                 _cleanup_udev_unref_ struct udev *udev;
-                _cleanup_udev_device_unref_ struct udev_device *device;
+                _cleanup_udev_device_unref_ struct udev_device *device = NULL;
                 char ifindex_str[2 + DECIMAL_STR_MAX(int)];
 
                 udev = udev_new();
@@ -873,7 +871,7 @@ int sd_dhcp6_client_start(sd_dhcp6_client *client)
         assert_return(client->event, -EINVAL);
         assert_return(client->index > 0, -EINVAL);
 
-        r = client_initialize(client);
+        r = client_reset(client);
         if (r < 0)
                 return r;
 
@@ -925,7 +923,7 @@ sd_dhcp6_client *sd_dhcp6_client_ref(sd_dhcp6_client *client) {
 
 sd_dhcp6_client *sd_dhcp6_client_unref(sd_dhcp6_client *client) {
         if (client && REFCNT_DEC(client->n_ref) <= 0) {
-                client_initialize(client);
+                client_reset(client);
 
                 sd_dhcp6_client_detach_event(client);
 
@@ -958,6 +956,8 @@ int sd_dhcp6_client_new(sd_dhcp6_client **ret)
 
         client->index = -1;
 
+        client->fd = -1;
+
         /* initialize DUID */
         client->duid.type = htobe16(DHCP6_DUID_EN);
         client->duid.pen = htobe32(SYSTEMD_PEN);