Skip to content

Auto-remove unreachable UDP clients on repeated send failures#138

Open
kevdotnet wants to merge 1 commit intoDroneBridge:masterfrom
kevdotnet:enonem-fix
Open

Auto-remove unreachable UDP clients on repeated send failures#138
kevdotnet wants to merge 1 commit intoDroneBridge:masterfrom
kevdotnet:enonem-fix

Conversation

@kevdotnet
Copy link
Copy Markdown
Contributor

Problem

When a UDP client (e.g. a GCS laptop) disconnects from the Wi-Fi network without sending any further packets, the ESP32 has no way to detect the disconnect via the connectionless UDP protocol. Subsequent sendto() calls to the stale client return ENOMEM (errno 12), causing a flood of error log messages until the device is rebooted or the client reconnects.

Fix

Added a send_fail_count field to db_udp_client_t. Each consecutive send failure to a client increments the counter; a successful send resets it to zero. After 5 consecutive failures the client is removed from the UDP distribution list with a warning log, silencing the error spam and freeing the slot for new clients.

Problem

When a UDP client (e.g. a GCS laptop) disconnects from the Wi-Fi network without sending any further packets, the ESP32 has no way to
detect the disconnect via the connectionless UDP protocol. Subsequent sendto() calls to the stale client return ENOMEM (errno 12), causing
a flood of error log messages until the device is rebooted or the client reconnects.

Fix

Added a send_fail_count field to db_udp_client_t. Each consecutive send failure to a client increments the counter; a successful send
resets it to zero. After 5 consecutive failures the client is removed from the UDP distribution list with a warning log, silencing the
error spam and freeing the slot for new clients.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant