diff --git a/repos/os/src/server/nic_router/domain.cc b/repos/os/src/server/nic_router/domain.cc index 2a6ba96a1c..eac8df9dd2 100644 --- a/repos/os/src/server/nic_router/domain.cc +++ b/repos/os/src/server/nic_router/domain.cc @@ -295,7 +295,13 @@ void Domain::deinit() _tcp_rules.destroy_each(_alloc); _udp_forward_rules.destroy_each(_alloc); _tcp_forward_rules.destroy_each(_alloc); - try { destroy(_alloc, &_dhcp_server()); } + try { + Dhcp_server &dhcp_server = _dhcp_server(); + _dhcp_server = Pointer(); + try { dhcp_server.dns_server_from().ip_config_dependents().remove(this); } + catch (Pointer::Invalid) { } + destroy(_alloc, &dhcp_server); + } catch (Pointer::Invalid) { } }