Overhaul SimpleMDNS handling of WiFi::begin/end #3166
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #3157
LWIP MDNS was not being removed from a netif when a device ::end was called, resulting in a crash on reconnect when MDNS or things like ArduinoOTA (which uses SimpleMDNS) were used.
They would not crash, however, if the initial WiFi::begin failed, because LWIP MDNS does not automatically add existing services to a "new" netif (i.e. there was no MDNS on the 2nd and following WiFi.begin() calls).
To fix the crash due to null-derefernce, add a way for SimpleMDNS to remove MSND from a netif before it is netif_removed.
To fix the lack of MDNS services after a WiFi reconnect, keep track of the services we've already added and add a call to hook into LwipIntfDev after a new netif has been brought up (link-state at least, if not DHCP).