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;
client = client_notify(client, error);
if (client)
- client_initialize(client);
+ client_reset(client);
return client;
}
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);
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();
assert_return(client->event, -EINVAL);
assert_return(client->index > 0, -EINVAL);
- r = client_initialize(client);
+ r = client_reset(client);
if (r < 0)
return r;
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);
client->index = -1;
+ client->fd = -1;
+
/* initialize DUID */
client->duid.type = htobe16(DHCP6_DUID_EN);
client->duid.pen = htobe32(SYSTEMD_PEN);