From c12ab688e437a72741cbd46971819a6272b3019e Mon Sep 17 00:00:00 2001 From: iofarm Date: Wed, 19 Nov 2025 11:53:05 -0500 Subject: [PATCH 1/4] Pass INADDR_NONE instead of IPAddress(NULL) to _nameFoundCallback on timeout --- MDNS.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/MDNS.cpp b/MDNS.cpp index 0d3f3a2..412dd62 100644 --- a/MDNS.cpp +++ b/MDNS.cpp @@ -1425,8 +1425,11 @@ void MDNS::_finishedResolvingName(char* name, const byte ipAddr[4]) uint8_t* n = this->_findFirstDotFromRight((const uint8_t*)name); *(n-1) = '\0'; } - - this->_nameFoundCallback((const char*)name, IPAddress(ipAddr)); + + this->_nameFoundCallback( + (const char*)name, + (NULL != ipAddr) ? IPAddress(ipAddr) : INADDR_NONE + ); } my_free(this->_resolveNames[0]); From a252bd8e1d07b3340887d41dc9f7a6fe1d84d1b0 Mon Sep 17 00:00:00 2001 From: iofarm Date: Wed, 19 Nov 2025 14:37:17 -0500 Subject: [PATCH 2/4] Made _matchStringPart case-insensitive --- MDNS.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/MDNS.cpp b/MDNS.cpp index 412dd62..baea264 100644 --- a/MDNS.cpp +++ b/MDNS.cpp @@ -1385,13 +1385,26 @@ uint8_t* MDNS::_findFirstDotFromRight(const uint8_t* str) return (uint8_t*)&p[2]; } +// case-insensitive memcmp +static int cimemcmp(const void *s1, const void *s2, size_t n) +{ + #define TO_LOWER(c) (c >= 'A' && c <= 'Z' ? c + ('a'-'A') : c) + for (size_t i = 0; i < n; i ++) { + uint8_t c1 = *((uint8_t*)s1+i), c2 = *((uint8_t*)s2+i); + int dc = TO_LOWER(c1) - TO_LOWER(c2); + if (dc) return dc; + } + return 0; + #undef TO_LOWER +} + int MDNS::_matchStringPart(const uint8_t** pCmpStr, int* pCmpLen, const uint8_t* buf, int dataLen) { int matches = 1; if (*pCmpLen >= dataLen) - matches &= (0 == memcmp(*pCmpStr, buf, dataLen)); + matches &= (0 == cimemcmp(*pCmpStr, buf, dataLen)); else matches = 0; From 7dd78a0881eb49a7bbe719e8b68b69c9a442be86 Mon Sep 17 00:00:00 2001 From: iofarm Date: Wed, 19 Nov 2025 14:37:17 -0500 Subject: [PATCH 3/4] Made _matchStringPart case-insensitive --- MDNS.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/MDNS.cpp b/MDNS.cpp index 0d3f3a2..7e9a1c6 100644 --- a/MDNS.cpp +++ b/MDNS.cpp @@ -1385,13 +1385,26 @@ uint8_t* MDNS::_findFirstDotFromRight(const uint8_t* str) return (uint8_t*)&p[2]; } +// case-insensitive memcmp +static int cimemcmp(const void *s1, const void *s2, size_t n) +{ + #define TO_LOWER(c) (c >= 'A' && c <= 'Z' ? c + ('a'-'A') : c) + for (size_t i = 0; i < n; i ++) { + uint8_t c1 = *((uint8_t*)s1+i), c2 = *((uint8_t*)s2+i); + int dc = TO_LOWER(c1) - TO_LOWER(c2); + if (dc) return dc; + } + return 0; + #undef TO_LOWER +} + int MDNS::_matchStringPart(const uint8_t** pCmpStr, int* pCmpLen, const uint8_t* buf, int dataLen) { int matches = 1; if (*pCmpLen >= dataLen) - matches &= (0 == memcmp(*pCmpStr, buf, dataLen)); + matches &= (0 == cimemcmp(*pCmpStr, buf, dataLen)); else matches = 0; From 0d7c65152aafdb4cba15254656fc1af907a35b7a Mon Sep 17 00:00:00 2001 From: iofarm Date: Wed, 19 Nov 2025 14:45:21 -0500 Subject: [PATCH 4/4] Revert "Made _matchStringPart case-insensitive" This reverts commit a252bd8e1d07b3340887d41dc9f7a6fe1d84d1b0. --- MDNS.cpp | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/MDNS.cpp b/MDNS.cpp index baea264..412dd62 100644 --- a/MDNS.cpp +++ b/MDNS.cpp @@ -1385,26 +1385,13 @@ uint8_t* MDNS::_findFirstDotFromRight(const uint8_t* str) return (uint8_t*)&p[2]; } -// case-insensitive memcmp -static int cimemcmp(const void *s1, const void *s2, size_t n) -{ - #define TO_LOWER(c) (c >= 'A' && c <= 'Z' ? c + ('a'-'A') : c) - for (size_t i = 0; i < n; i ++) { - uint8_t c1 = *((uint8_t*)s1+i), c2 = *((uint8_t*)s2+i); - int dc = TO_LOWER(c1) - TO_LOWER(c2); - if (dc) return dc; - } - return 0; - #undef TO_LOWER -} - int MDNS::_matchStringPart(const uint8_t** pCmpStr, int* pCmpLen, const uint8_t* buf, int dataLen) { int matches = 1; if (*pCmpLen >= dataLen) - matches &= (0 == cimemcmp(*pCmpStr, buf, dataLen)); + matches &= (0 == memcmp(*pCmpStr, buf, dataLen)); else matches = 0;