Commit 83810fa1 authored by horihiro's avatar horihiro Committed by Me No Dev

add support for TXT records in mDNS query responses (#1480)

* add methods for getting TXTs.

* add methods for getting TXTs.
parent 8e4ebf49
...@@ -285,4 +285,51 @@ uint16_t MDNSResponder::port(int idx) { ...@@ -285,4 +285,51 @@ uint16_t MDNSResponder::port(int idx) {
return result->port; return result->port;
} }
int MDNSResponder::numTxt(int idx) {
mdns_result_t * result = _getResult(idx);
if(!result){
log_e("Result %d not found", idx);
return 0;
}
return result->txt_count;
}
bool MDNSResponder::hasTxt(int idx, const char * key) {
mdns_result_t * result = _getResult(idx);
if(!result){
log_e("Result %d not found", idx);
return false;
}
int i = 0;
while(i < result->txt_count) {
if (strcmp(result->txt[i].key, key) == 0) return true;
i++;
}
return false;
}
String MDNSResponder::txt(int idx, const char * key) {
mdns_result_t * result = _getResult(idx);
if(!result){
log_e("Result %d not found", idx);
return "";
}
int i = 0;
while(i < result->txt_count) {
if (strcmp(result->txt[i].key, key) == 0) return result->txt[i].value;
i++;
}
return "";
}
String MDNSResponder::txt(int idx, int txtIdx) {
mdns_result_t * result = _getResult(idx);
if(!result){
log_e("Result %d not found", idx);
return "";
}
if (txtIdx >= result->txt_count) return "";
return result->txt[txtIdx].value;
}
MDNSResponder MDNS; MDNSResponder MDNS;
...@@ -107,6 +107,10 @@ public: ...@@ -107,6 +107,10 @@ public:
IPAddress IP(int idx); IPAddress IP(int idx);
IPv6Address IPv6(int idx); IPv6Address IPv6(int idx);
uint16_t port(int idx); uint16_t port(int idx);
int numTxt(int idx);
bool hasTxt(int idx, const char * key);
String txt(int idx, const char * key);
String txt(int idx, int txtIdx);
private: private:
String _hostname; String _hostname;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment