diff --git a/src/utun_instance.c b/src/utun_instance.c index 8f04652f..6f2f9b22 100644 --- a/src/utun_instance.c +++ b/src/utun_instance.c @@ -408,6 +408,7 @@ void utun_instance_destroy(struct UTUN_INSTANCE *instance) { instance->running = 0; stun_nat_destroy(instance); + stun_nat_forget_ports(instance); etcp_padding_stop(&instance->padding); DEBUG_INFO(DEBUG_CATEGORY_SYS, "[DESTROY] A done — diagnose complete"); diff --git a/tests/test_stun_nat.c b/tests/test_stun_nat.c index d5d307c6..cbd301c0 100644 --- a/tests/test_stun_nat.c +++ b/tests/test_stun_nat.c @@ -220,6 +220,7 @@ static struct stun_nat_result wait_result(struct fixture* f) { /* Проверяет неизменность исходного fd, sockaddr, NAT-полей и отсутствие таймеров после destroy. */ static void fixture_destroy(struct fixture* f) { stun_nat_destroy(&f->inst); + stun_nat_forget_ports(&f->inst); assert(!memcmp(&f->source, &f->original, sizeof(f->source))); struct sockaddr_storage addr = {0}; socklen_t size = sizeof(addr);