From 7a35ee4813c7b578ab99abf0112d7bca02afd1a2 Mon Sep 17 00:00:00 2001 From: probonopd Date: Sat, 16 Jan 2016 20:39:52 +0100 Subject: [PATCH] advertise all hosted services (written by me-no-dev) --- libraries/ESP8266mDNS/ESP8266mDNS.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/libraries/ESP8266mDNS/ESP8266mDNS.cpp b/libraries/ESP8266mDNS/ESP8266mDNS.cpp index a690bdf22..04b66fede 100644 --- a/libraries/ESP8266mDNS/ESP8266mDNS.cpp +++ b/libraries/ESP8266mDNS/ESP8266mDNS.cpp @@ -366,6 +366,10 @@ void MDNSResponder::_parsePacket(){ memmove(protoName, protoName+1, protoNameLen); protoNameLen--; protoParsed = true; + } else if(strcmp("services", serviceName) == 0 && strcmp("_dns-sd", protoName) == 0){ + _conn->flush(); + advertiseServices(); + return; } else { #ifdef MDNS_DEBUG_ERR Serial.printf("ERR_PROTO: %s\n", protoName); @@ -479,6 +483,18 @@ void MDNSResponder::enableArduino(uint16_t port, bool auth){ addServiceTxt("arduino", "tcp", "auth_upload", (auth) ? "yes":"no"); } +size_t MDNSResponder::advertiseServices(){ + MDNSService* servicePtr; + size_t i = 0; + for (servicePtr = _services; servicePtr; servicePtr = servicePtr->_next) { + if(servicePtr->_port > 0){ + _reply(0x0F, servicePtr->_name, servicePtr->_proto, servicePtr->_port); + i++; + } + } + return i; +} + void MDNSResponder::_reply(uint8_t replyMask, char * service, char *proto, uint16_t port){ int i; if(replyMask == 0) return;