mirror of
https://github.com/espressif/esp-lwip.git
synced 2026-06-05 21:04:45 +00:00
dns: Handle active DNS entries before clearing cache
Issue: A bug was identified where calling dns_clear_cache() after a DNS query request but before the query response is received causes the dns_clear_cache() function to clear the dns_table database. This results in the netconn layer waiting indefinitely for the dns_call_found() callback, leading to a deadlock. Resolution: Added logic to invoke dns_call_found() for any active DNS entries before clearing the entire DNS cache in the dns_clear_cache() function. This change ensures that in-use entries are handled properly, preventing the system from entering a deadlock state.
This commit is contained in:
@@ -408,6 +408,13 @@ dns_setserver(u8_t numdns, const ip_addr_t *dnsserver)
|
||||
void
|
||||
dns_clear_cache(void)
|
||||
{
|
||||
u8_t i=0;
|
||||
for (i = 0; i < DNS_TABLE_SIZE; i++) {
|
||||
if (dns_table[i].state != DNS_STATE_UNUSED) {
|
||||
dns_call_found(i, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
memset(dns_table, 0, sizeof(struct dns_table_entry) * DNS_TABLE_SIZE);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user