Compress synthetic responses

This commit is contained in:
Frank Denis 2019-12-11 14:02:56 +01:00
parent 9553d7f8c5
commit a7b7bdc11e
3 changed files with 9 additions and 9 deletions

View File

@ -31,13 +31,13 @@ func FetchCurrentDNSCryptCert(proxy *Proxy, serverName *string, proto string, pk
if serverName == nil {
serverName = &providerName
}
query := new(dns.Msg)
query := dns.Msg{}
query.SetQuestion(providerName, dns.TypeTXT)
if !strings.HasPrefix(providerName, "2.dnscrypt-cert.") {
dlog.Warnf("[%v] uses a non-standard provider name ('%v' doesn't start with '2.dnscrypt-cert.')", *serverName, providerName)
relayUDPAddr, relayTCPAddr = nil, nil
}
in, rtt, err := dnsExchange(proxy, proto, query, serverAddress, relayUDPAddr, relayTCPAddr, serverName)
in, rtt, err := dnsExchange(proxy, proto, &query, serverAddress, relayUDPAddr, relayTCPAddr, serverName)
if err != nil {
dlog.Noticef("[%s] TIMEOUT", *serverName)
return CertInfo{}, 0, err

View File

@ -10,7 +10,7 @@ import (
)
func EmptyResponseFromMessage(srcMsg *dns.Msg) *dns.Msg {
dstMsg := dns.Msg{MsgHdr: srcMsg.MsgHdr}
dstMsg := dns.Msg{MsgHdr: srcMsg.MsgHdr, Compress: true}
dstMsg.Question = srcMsg.Question
dstMsg.Response = true
if srcMsg.RecursionDesired {
@ -26,11 +26,11 @@ func EmptyResponseFromMessage(srcMsg *dns.Msg) *dns.Msg {
}
func TruncatedResponse(packet []byte) ([]byte, error) {
srcMsg := new(dns.Msg)
srcMsg := dns.Msg{}
if err := srcMsg.Unpack(packet); err != nil {
return nil, err
}
dstMsg := EmptyResponseFromMessage(srcMsg)
dstMsg := EmptyResponseFromMessage(&srcMsg)
dstMsg.Truncated = true
return dstMsg.Pack()
}

View File

@ -203,11 +203,11 @@ func (xTransport *XTransport) resolveUsingSystem(host string) (ip net.IP, ttl ti
func (xTransport *XTransport) resolveUsingResolver(proto, host string, resolver string) (ip net.IP, ttl time.Duration, err error) {
dnsClient := dns.Client{Net: proto}
if xTransport.useIPv4 {
msg := new(dns.Msg)
msg := dns.Msg{}
msg.SetQuestion(dns.Fqdn(host), dns.TypeA)
msg.SetEdns0(uint16(MaxDNSPacketSize), true)
var in *dns.Msg
if in, _, err = dnsClient.Exchange(msg, resolver); err == nil {
if in, _, err = dnsClient.Exchange(&msg, resolver); err == nil {
answers := make([]dns.RR, 0)
for _, answer := range in.Answer {
if answer.Header().Rrtype == dns.TypeA {
@ -223,11 +223,11 @@ func (xTransport *XTransport) resolveUsingResolver(proto, host string, resolver
}
}
if xTransport.useIPv6 {
msg := new(dns.Msg)
msg := dns.Msg{}
msg.SetQuestion(dns.Fqdn(host), dns.TypeAAAA)
msg.SetEdns0(uint16(MaxDNSPacketSize), true)
var in *dns.Msg
if in, _, err = dnsClient.Exchange(msg, resolver); err == nil {
if in, _, err = dnsClient.Exchange(&msg, resolver); err == nil {
answers := make([]dns.RR, 0)
for _, answer := range in.Answer {
if answer.Header().Rrtype == dns.TypeAAAA {