sd_dhcp6_lease_unref(client->lease);
client->lease = TAKE_PTR(lease);
+ (void) event_source_disable(client->timeout_resend);
+ client->state = DHCP6_STATE_STOPPED;
+
client_notify(client, SD_DHCP6_CLIENT_EVENT_INFORMATION_REQUEST);
- return client_set_state(client, DHCP6_STATE_STOPPED);
+ return 0;
}
static int client_process_reply(
}
switch (state) {
- case DHCP6_STATE_STOPPED:
- if (client->state == DHCP6_STATE_INFORMATION_REQUEST) {
- client->state = DHCP6_STATE_STOPPED;
-
- return 0;
- }
-
- _fallthrough_;
case DHCP6_STATE_SOLICITATION:
client->state = DHCP6_STATE_SOLICITATION;
break;
+ case DHCP6_STATE_STOPPED:
case DHCP6_STATE_BOUND:
default:
assert_not_reached();
assert_se(sd_dhcp6_lease_get_ntp_addrs(lease, &addrs) == 1);
assert_se(!memcmp(addrs, &msg_advertise[159], 16));
- assert_se(sd_dhcp6_client_set_information_request(client, false) == -EBUSY);
assert_se(sd_dhcp6_client_set_callback(client, NULL, e) >= 0);
assert_se(sd_dhcp6_client_stop(client) >= 0);
assert_se(sd_dhcp6_client_set_information_request(client, false) >= 0);