fix: bug in MDNS handler

- service name was basedon hostname which will cause issues with user-defined values
This commit is contained in:
ZanzyTHEbar 2023-03-03 13:43:24 +00:00
parent 173abdf763
commit 1ca7d1f48c

View File

@ -1,38 +1,39 @@
#include "MDNSManager.hpp"
MDNSHandler::MDNSHandler(StateManager<MDNSState_e> *stateManager,
ProjectConfig *configManager) : stateManager(stateManager),
configManager(configManager) {}
MDNSHandler::MDNSHandler(StateManager<MDNSState_e>* stateManager,
ProjectConfig* configManager)
: stateManager(stateManager), configManager(configManager) {}
bool MDNSHandler::startMDNS()
{
ProjectConfig::MDNSConfig_t *mdnsConfig = configManager->getMDNSConfig();
if (!MDNS.begin(mdnsConfig->hostname.c_str())) // lowercase only - as this will be the url
{
stateManager->setState(MDNSState_e::MDNSState_Error);
log_e("Error initializing MDNS");
return false;
}
bool MDNSHandler::startMDNS() {
const std::string service = "_openiristracker";
ProjectConfig::MDNSConfig_t* mdnsConfig = configManager->getMDNSConfig();
if (!MDNS.begin(mdnsConfig->hostname
.c_str())) // lowercase only - as this will be the url
{
stateManager->setState(MDNSState_e::MDNSState_Error);
log_e("Error initializing MDNS");
return false;
}
stateManager->setState(MDNSState_e::MDNSState_Starting);
MDNS.addService(("_" + mdnsConfig->hostname).c_str(), "_tcp", 80);
char port[20];
//! Add service needs leading _ on ESP32 implementation for some reason (according to the docs)
MDNS.addServiceTxt(("_" + mdnsConfig->hostname).c_str(), "_tcp", "stream_port", "80"); //! convert int to const char* using a very efficient implemenation of itoa
log_i("MDNS initialized!");
stateManager->setState(MDNSState_e::MDNSState_Started);
return true;
stateManager->setState(MDNSState_e::MDNSState_Starting);
MDNS.addService(service.c_str(), "_tcp", 80);
char port[20];
//! Add service needs leading _ on ESP32 implementation for some reason
//! (according to the docs)
MDNS.addServiceTxt(service.c_str(), "_tcp", "stream_port",
"80");
log_i("MDNS initialized!");
stateManager->setState(MDNSState_e::MDNSState_Started);
return true;
}
void MDNSHandler::update(ObserverEvent::Event event)
{
switch (event)
{
case ObserverEvent::Event::mdnsConfigUpdated:
MDNS.end();
startMDNS();
break;
default:
break;
}
void MDNSHandler::update(ObserverEvent::Event event) {
switch (event) {
case ObserverEvent::Event::mdnsConfigUpdated:
MDNS.end();
startMDNS();
break;
default:
break;
}
}