@@ -74,11 +74,11 @@ extern "C" {
74
74
#define MDNS_CLASS_IN 0x0001
75
75
#define MDNS_CLASS_IN_FLUSH_CACHE 0x8001
76
76
77
- #define MDNS_ANSWERS_ALL 0x0F
78
- #define MDNS_ANSWER_PTR 0x08
79
- #define MDNS_ANSWER_TXT 0x04
80
- #define MDNS_ANSWER_SRV 0x02
81
77
#define MDNS_ANSWER_A 0x01
78
+ #define MDNS_ANSWER_SRV 0x02
79
+ #define MDNS_ANSWER_TXT 0x04
80
+ #define MDNS_ANSWER_PTR 0x08
81
+ #define MDNS_ANSWER_AAAA 0x10
82
82
83
83
#define _conn_read32 () (((uint32_t )_conn->read () << 24) | ((uint32_t )_conn->read() << 16) | ((uint32_t )_conn->read() << 8) | _conn->read())
84
84
#define _conn_read16 () (((uint16_t )_conn->read () << 8) | _conn->read())
@@ -332,11 +332,11 @@ int MDNSResponder::queryService(char *service, char *proto) {
332
332
333
333
// Only supports sending one PTR query
334
334
// Send the Name field (eg. "_http._tcp.local")
335
- _conn->append (reinterpret_cast <const char *>(&serviceNameLen), 1 ); // lenght of "_" + service
335
+ _conn->append (reinterpret_cast <const char *>(&serviceNameLen), 1 ); // length of "_" + service
336
336
_conn->append (reinterpret_cast <const char *>(serviceName), serviceNameLen); // "_" + service
337
- _conn->append (reinterpret_cast <const char *>(&protoNameLen), 1 ); // lenght of "_" + proto
337
+ _conn->append (reinterpret_cast <const char *>(&protoNameLen), 1 ); // length of "_" + proto
338
338
_conn->append (reinterpret_cast <const char *>(protoName), protoNameLen); // "_" + proto
339
- _conn->append (reinterpret_cast <const char *>(&localNameLen), 1 ); // lenght of "local"
339
+ _conn->append (reinterpret_cast <const char *>(&localNameLen), 1 ); // length of "local"
340
340
_conn->append (reinterpret_cast <const char *>(localName), localNameLen); // "local"
341
341
_conn->append (reinterpret_cast <const char *>(&terminator), 1 ); // terminator
342
342
@@ -824,10 +824,11 @@ void MDNSResponder::_parsePacket(){
824
824
}
825
825
uint8_t responseMask = 0 ;
826
826
for (i=0 ;i<question;i++){
827
- if (questions[i] == MDNS_TYPE_A) responseMask |= 0x1 ;
828
- else if (questions[i] == MDNS_TYPE_SRV) responseMask |= 0x3 ;
829
- else if (questions[i] == MDNS_TYPE_TXT) responseMask |= 0x4 ;
830
- else if (questions[i] == MDNS_TYPE_PTR) responseMask |= 0xF ;
827
+ if (questions[i] == MDNS_TYPE_A) responseMask |= MDNS_ANSWER_A;
828
+ else if (questions[i] == MDNS_TYPE_SRV) responseMask |= MDNS_ANSWER_A | MDNS_ANSWER_SRV;
829
+ else if (questions[i] == MDNS_TYPE_TXT) responseMask |= MDNS_ANSWER_TXT;
830
+ else if (questions[i] == MDNS_TYPE_PTR) responseMask |= MDNS_ANSWER_A | MDNS_ANSWER_SRV | MDNS_ANSWER_TXT;
831
+ else if (questions[i] == MDNS_TYPE_AAAA) responseMask |= MDNS_ANSWER_AAAA;
831
832
}
832
833
833
834
return _reply (responseMask, serviceName, protoName, servicePort);
@@ -891,7 +892,8 @@ void MDNSResponder::_reply(uint8_t replyMask, char * service, char *proto, uint1
891
892
char terminator[] = " \0 " ;
892
893
893
894
uint8_t answerCount = 0 ;
894
- for (i=0 ;i<4 ;i++){
895
+ for (i=0 ; i<4 ; i++){
896
+ // we don't add AAAA to answers count because we never answer those
895
897
if (replyMask & (1 << i)) answerCount++;
896
898
}
897
899
@@ -909,13 +911,13 @@ void MDNSResponder::_reply(uint8_t replyMask, char * service, char *proto, uint1
909
911
_conn->append (reinterpret_cast <const char *>(head), 12 );
910
912
911
913
// PTR Response
912
- if (replyMask & 0x8 ){
914
+ if (replyMask & MDNS_ANSWER_PTR ){
913
915
// Send the Name field (ie. "_http._tcp.local")
914
- _conn->append (reinterpret_cast <const char *>(&serviceNameLen), 1 ); // lenght of "_http"
916
+ _conn->append (reinterpret_cast <const char *>(&serviceNameLen), 1 ); // length of "_http"
915
917
_conn->append (reinterpret_cast <const char *>(serviceName), serviceNameLen); // "_http"
916
- _conn->append (reinterpret_cast <const char *>(&protoNameLen), 1 ); // lenght of "_tcp"
918
+ _conn->append (reinterpret_cast <const char *>(&protoNameLen), 1 ); // length of "_tcp"
917
919
_conn->append (reinterpret_cast <const char *>(protoName), protoNameLen); // "_tcp"
918
- _conn->append (reinterpret_cast <const char *>(&localNameLen), 1 ); // lenght "local"
920
+ _conn->append (reinterpret_cast <const char *>(&localNameLen), 1 ); // length "local"
919
921
_conn->append (reinterpret_cast <const char *>(localName), localNameLen); // "local"
920
922
_conn->append (reinterpret_cast <const char *>(&terminator), 1 ); // terminator
921
923
@@ -930,27 +932,27 @@ void MDNSResponder::_reply(uint8_t replyMask, char * service, char *proto, uint1
930
932
_conn->append (reinterpret_cast <const char *>(ptrAttrs), 10 );
931
933
932
934
// Send the RData (ie. "My IOT device._http._tcp.local")
933
- _conn->append (reinterpret_cast <const char *>(&instanceNameLen), 1 ); // lenght of "My IOT device"
935
+ _conn->append (reinterpret_cast <const char *>(&instanceNameLen), 1 ); // length of "My IOT device"
934
936
_conn->append (reinterpret_cast <const char *>(instanceName.c_str ()), instanceNameLen);// "My IOT device"
935
- _conn->append (reinterpret_cast <const char *>(&serviceNameLen), 1 ); // lenght of "_http"
937
+ _conn->append (reinterpret_cast <const char *>(&serviceNameLen), 1 ); // length of "_http"
936
938
_conn->append (reinterpret_cast <const char *>(serviceName), serviceNameLen); // "_http"
937
- _conn->append (reinterpret_cast <const char *>(&protoNameLen), 1 ); // lenght of "_tcp"
939
+ _conn->append (reinterpret_cast <const char *>(&protoNameLen), 1 ); // length of "_tcp"
938
940
_conn->append (reinterpret_cast <const char *>(protoName), protoNameLen); // "_tcp"
939
- _conn->append (reinterpret_cast <const char *>(&localNameLen), 1 ); // lenght "local"
941
+ _conn->append (reinterpret_cast <const char *>(&localNameLen), 1 ); // length "local"
940
942
_conn->append (reinterpret_cast <const char *>(localName), localNameLen); // "local"
941
943
_conn->append (reinterpret_cast <const char *>(&terminator), 1 ); // terminator
942
944
}
943
945
944
946
// TXT Responce
945
- if (replyMask & 0x4 ){
947
+ if (replyMask & MDNS_ANSWER_TXT ){
946
948
// Send the name field (ie. "My IOT device._http._tcp.local")
947
- _conn->append (reinterpret_cast <const char *>(&instanceNameLen), 1 ); // lenght of "My IOT device"
949
+ _conn->append (reinterpret_cast <const char *>(&instanceNameLen), 1 ); // length of "My IOT device"
948
950
_conn->append (reinterpret_cast <const char *>(instanceName.c_str ()), instanceNameLen);// "My IOT device"
949
- _conn->append (reinterpret_cast <const char *>(&serviceNameLen), 1 ); // lenght of "_http"
951
+ _conn->append (reinterpret_cast <const char *>(&serviceNameLen), 1 ); // length of "_http"
950
952
_conn->append (reinterpret_cast <const char *>(serviceName), serviceNameLen); // "_http"
951
- _conn->append (reinterpret_cast <const char *>(&protoNameLen), 1 ); // lenght of "_tcp"
953
+ _conn->append (reinterpret_cast <const char *>(&protoNameLen), 1 ); // length of "_tcp"
952
954
_conn->append (reinterpret_cast <const char *>(protoName), protoNameLen); // "_tcp"
953
- _conn->append (reinterpret_cast <const char *>(&localNameLen), 1 ); // lenght "local"
955
+ _conn->append (reinterpret_cast <const char *>(&localNameLen), 1 ); // length "local"
954
956
_conn->append (reinterpret_cast <const char *>(localName), localNameLen); // "local"
955
957
_conn->append (reinterpret_cast <const char *>(&terminator), 1 ); // terminator
956
958
@@ -968,23 +970,23 @@ void MDNSResponder::_reply(uint8_t replyMask, char * service, char *proto, uint1
968
970
MDNSTxt * txtPtr = _getServiceTxt (service,proto);
969
971
while (txtPtr !=0 ){
970
972
uint8_t txtLen = txtPtr->_txt .length ();
971
- _conn->append (reinterpret_cast <const char *>(&txtLen), 1 ); // lenght of txt
973
+ _conn->append (reinterpret_cast <const char *>(&txtLen), 1 ); // length of txt
972
974
_conn->append (reinterpret_cast <const char *>(txtPtr->_txt .c_str ()), txtLen);// the txt
973
975
txtPtr = txtPtr->_next ;
974
976
}
975
977
}
976
978
977
979
978
980
// SRV Responce
979
- if (replyMask & 0x2 ){
981
+ if (replyMask & MDNS_ANSWER_SRV ){
980
982
// Send the name field (ie. "My IOT device._http._tcp.local")
981
- _conn->append (reinterpret_cast <const char *>(&instanceNameLen), 1 ); // lenght of "My IOT device"
983
+ _conn->append (reinterpret_cast <const char *>(&instanceNameLen), 1 ); // length of "My IOT device"
982
984
_conn->append (reinterpret_cast <const char *>(instanceName.c_str ()), instanceNameLen);// "My IOT device"
983
- _conn->append (reinterpret_cast <const char *>(&serviceNameLen), 1 ); // lenght of "_http"
985
+ _conn->append (reinterpret_cast <const char *>(&serviceNameLen), 1 ); // length of "_http"
984
986
_conn->append (reinterpret_cast <const char *>(serviceName), serviceNameLen); // "_http"
985
- _conn->append (reinterpret_cast <const char *>(&protoNameLen), 1 ); // lenght of "_tcp"
987
+ _conn->append (reinterpret_cast <const char *>(&protoNameLen), 1 ); // length of "_tcp"
986
988
_conn->append (reinterpret_cast <const char *>(protoName), protoNameLen); // "_tcp"
987
- _conn->append (reinterpret_cast <const char *>(&localNameLen), 1 ); // lenght "local"
989
+ _conn->append (reinterpret_cast <const char *>(&localNameLen), 1 ); // length "local"
988
990
_conn->append (reinterpret_cast <const char *>(localName), localNameLen); // "local"
989
991
_conn->append (reinterpret_cast <const char *>(&terminator), 1 ); // terminator
990
992
@@ -1007,20 +1009,20 @@ void MDNSResponder::_reply(uint8_t replyMask, char * service, char *proto, uint1
1007
1009
};
1008
1010
_conn->append (reinterpret_cast <const char *>(srvRData), 6 );
1009
1011
// Send the RData (ie. "esp8266.local")
1010
- _conn->append (reinterpret_cast <const char *>(&hostNameLen), 1 ); // lenght of "esp8266"
1012
+ _conn->append (reinterpret_cast <const char *>(&hostNameLen), 1 ); // length of "esp8266"
1011
1013
_conn->append (reinterpret_cast <const char *>(hostName.c_str ()), hostNameLen);// "esp8266"
1012
- _conn->append (reinterpret_cast <const char *>(&localNameLen), 1 ); // lenght "local"
1014
+ _conn->append (reinterpret_cast <const char *>(&localNameLen), 1 ); // length "local"
1013
1015
_conn->append (reinterpret_cast <const char *>(localName), localNameLen); // "local"
1014
1016
_conn->append (reinterpret_cast <const char *>(&terminator), 1 ); // terminator
1015
1017
1016
1018
}
1017
1019
1018
1020
// A Response
1019
- if (replyMask & 0x1 ){
1021
+ if (replyMask & MDNS_ANSWER_A ){
1020
1022
// Send the RData (ie. "esp8266.local")
1021
- _conn->append (reinterpret_cast <const char *>(&hostNameLen), 1 ); // lenght of "esp8266"
1023
+ _conn->append (reinterpret_cast <const char *>(&hostNameLen), 1 ); // length of "esp8266"
1022
1024
_conn->append (reinterpret_cast <const char *>(hostName.c_str ()), hostNameLen);// "esp8266"
1023
- _conn->append (reinterpret_cast <const char *>(&localNameLen), 1 ); // lenght "local"
1025
+ _conn->append (reinterpret_cast <const char *>(&localNameLen), 1 ); // length "local"
1024
1026
_conn->append (reinterpret_cast <const char *>(localName), localNameLen); // "local"
1025
1027
_conn->append (reinterpret_cast <const char *>(&terminator), 1 ); // terminator
1026
1028
0 commit comments