diff --git a/repos/os/src/server/nic_router/domain.cc b/repos/os/src/server/nic_router/domain.cc index 0fc0bb3559..e50f7bec12 100644 --- a/repos/os/src/server/nic_router/domain.cc +++ b/repos/os/src/server/nic_router/domain.cc @@ -392,11 +392,12 @@ void Domain::deinit() _tcp_rules.destroy_each(_alloc); _udp_forward_rules.destroy_each(_alloc); _tcp_forward_rules.destroy_each(_alloc); - with_dhcp_server([&] (Dhcp_server &dhcp_server) { - _dhcp_server_ptr = nullptr; - dhcp_server.with_dns_config_from([&] (Domain &domain) { + if (_dhcp_server_ptr) { + _dhcp_server_ptr->with_dns_config_from([&] (Domain &domain) { domain.ip_config_dependents().remove(this); }); - destroy(_alloc, &dhcp_server); }); + _dhcp_server_ptr = nullptr; + destroy(_alloc, _dhcp_server_ptr); + } }