From 3f267bd2389169cde9dcfb5d27082acec89d57ba Mon Sep 17 00:00:00 2001 From: LaborEtArs Date: Wed, 30 Jan 2019 03:24:59 +0100 Subject: [PATCH] LEAmDNS_Fixes_1_3 (#5689) * LEAmDNS_Fixes_1_3 * Updated LEAmDNSResponder::begin() --- libraries/ESP8266mDNS/src/LEAmDNS.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/libraries/ESP8266mDNS/src/LEAmDNS.cpp b/libraries/ESP8266mDNS/src/LEAmDNS.cpp index 43e1a802d..581e7180a 100644 --- a/libraries/ESP8266mDNS/src/LEAmDNS.cpp +++ b/libraries/ESP8266mDNS/src/LEAmDNS.cpp @@ -22,8 +22,11 @@ * */ +#include + #include "LEAmDNS_Priv.h" + namespace esp8266 { /* @@ -87,28 +90,30 @@ MDNSResponder::~MDNSResponder(void) { */ bool MDNSResponder::begin(const char* p_pcHostname) { - bool bResult = (0 != m_pcHostname); + bool bResult = false; - if (0 == m_pcHostname) { + if (0 == m_pUDPContext) { if (_setHostname(p_pcHostname)) { m_GotIPHandler = WiFi.onStationModeGotIP([this](const WiFiEventStationModeGotIP& pEvent) { (void) pEvent; - _restart(); + // Ensure that _restart() runs in USER context + schedule_function(std::bind(&MDNSResponder::_restart, this)); }); m_DisconnectedHandler = WiFi.onStationModeDisconnected([this](const WiFiEventStationModeDisconnected& pEvent) { (void) pEvent; - _restart(); + // Ensure that _restart() runs in USER context + schedule_function(std::bind(&MDNSResponder::_restart, this)); }); bResult = _restart(); } + DEBUG_EX_ERR(if (!bResult) { DEBUG_OUTPUT.printf_P(PSTR("[MDNSResponder] begin: FAILED for '%s'!\n"), (p_pcHostname ?: "-")); } ); } else { - DEBUG_EX_INFO(DEBUG_OUTPUT.printf_P(PSTR("[MDNSResponder] begin: Ignoring multiple calls (Ignored host domain: '%s')!\n"), (p_pcHostname ?: "-"));); + DEBUG_EX_INFO(DEBUG_OUTPUT.printf_P(PSTR("[MDNSResponder] begin: Ignoring multiple calls to begin (Ignored host domain: '%s')!\n"), (p_pcHostname ?: "-"));); } - DEBUG_EX_ERR(if (!bResult) { DEBUG_OUTPUT.printf_P(PSTR("[MDNSResponder] begin: FAILED for '%s'!\n"), (p_pcHostname ?: "-")); } ); return bResult; }