mirror of
https://github.com/m13253/dns-over-https.git
synced 2026-03-30 12:05:38 +00:00
@@ -156,7 +156,7 @@ func (c *Client) handlerFunc(w dns.ResponseWriter, r *dns.Msg, isTCP bool) {
|
||||
return
|
||||
}
|
||||
|
||||
fullReply := jsonDNS.Unmarshal(reply, &respJson, udpSize)
|
||||
fullReply := jsonDNS.Unmarshal(reply, &respJson, udpSize, ednsClientNetmask)
|
||||
buf, err := fullReply.Pack()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
|
||||
@@ -42,7 +42,7 @@ func PrepareReply(req *dns.Msg) *dns.Msg {
|
||||
return reply
|
||||
}
|
||||
|
||||
func Unmarshal(msg *dns.Msg, resp *Response, udpSize uint16) *dns.Msg {
|
||||
func Unmarshal(msg *dns.Msg, resp *Response, udpSize uint16, ednsClientNetmask uint8) *dns.Msg {
|
||||
now := time.Now().UTC()
|
||||
|
||||
reply := msg.Copy()
|
||||
@@ -110,10 +110,17 @@ func Unmarshal(msg *dns.Msg, resp *Response, udpSize uint16) *dns.Msg {
|
||||
}
|
||||
}
|
||||
if ednsClientAddress != nil {
|
||||
if ednsClientNetmask == 255 {
|
||||
if ednsClientFamily == 1 {
|
||||
ednsClientNetmask = 24
|
||||
} else {
|
||||
ednsClientNetmask = 48
|
||||
}
|
||||
}
|
||||
edns0Subnet := new(dns.EDNS0_SUBNET)
|
||||
edns0Subnet.Code = dns.EDNS0SUBNET
|
||||
edns0Subnet.Family = ednsClientFamily
|
||||
edns0Subnet.SourceNetmask = ednsClientScope
|
||||
edns0Subnet.SourceNetmask = ednsClientNetmask
|
||||
edns0Subnet.SourceScope = ednsClientScope
|
||||
edns0Subnet.Address = ednsClientAddress
|
||||
opt.Option = append(opt.Option, edns0Subnet)
|
||||
|
||||
Reference in New Issue
Block a user