proper support for mocking spongebob dns encoding

This commit is contained in:
cynic 2024-08-18 22:09:12 +00:00
parent 0de7bd35f3
commit ebc2393d96

View File

@ -147,7 +147,7 @@ func (s *MeshnameServer) handleMeshnameRequest(w dns.ResponseWriter, r *dns.Msg)
rm.Question = questions rm.Question = questions
// always use lowercase internally among meshname instances // always use lowercase internally among meshname instances
originalQuestionName := rm.Question[0].Name originalQuestionName := rm.Question[0].Name
// mocking spongebob dns encoding // mocking spongebob dns encoding support
rm.Question[0].Name = strings.ToLower(originalQuestionName) rm.Question[0].Name = strings.ToLower(originalQuestionName)
// add alternative port number // add alternative port number
portNumbers := []string{"53"} portNumbers := []string{"53"}
@ -159,11 +159,12 @@ func (s *MeshnameServer) handleMeshnameRequest(w dns.ResponseWriter, r *dns.Msg)
resp, _, err := s.dnsClient.Exchange(rm, "["+remoteServer+"]:"+port) resp, _, err := s.dnsClient.Exchange(rm, "["+remoteServer+"]:"+port)
// if we had success we don't keep trying other ports // if we had success we don't keep trying other ports
if err == nil { if err == nil {
s.log.Debugln(resp.String())
if len(resp.Answer) > 0 { if len(resp.Answer) > 0 {
// mocking spongebob dns encoding // mocking spongebob dns encoding support
resp.Question[0].Name = originalQuestionName
resp.Answer[0].Header().Name = originalQuestionName resp.Answer[0].Header().Name = originalQuestionName
} }
s.log.Debugln(resp.String())
m.Answer = append(m.Answer, resp.Answer...) m.Answer = append(m.Answer, resp.Answer...)
m.Ns = append(m.Ns, resp.Ns...) m.Ns = append(m.Ns, resp.Ns...)
m.Extra = append(m.Extra, resp.Extra...) m.Extra = append(m.Extra, resp.Extra...)