mirror of
https://github.com/DNSCrypt/dnscrypt-proxy.git
synced 2025-03-04 10:24:40 +01:00
Use EDNS0 padding for local DoH
This commit is contained in:
parent
6fb42d0eae
commit
7fb62d98ea
1 changed files with 11 additions and 3 deletions
|
@ -6,10 +6,10 @@ import (
|
|||
"io/ioutil"
|
||||
"net"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/jedisct1/dlog"
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
|
||||
type localDoHHandler struct {
|
||||
|
@ -52,11 +52,19 @@ func (handler localDoHHandler) ServeHTTP(writer http.ResponseWriter, request *ht
|
|||
writer.WriteHeader(500)
|
||||
return
|
||||
}
|
||||
msg := dns.Msg{}
|
||||
if err := msg.Unpack(packet); err != nil {
|
||||
writer.WriteHeader(500)
|
||||
return
|
||||
}
|
||||
padLen := 127 - (len(response)+127)&127
|
||||
paddedResponse, err := addEDNS0PaddingIfNoneFound(&msg, response, padLen)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
writer.Header().Set("Content-Type", dataType)
|
||||
writer.Header().Set("X-Pad", strings.Repeat("X", padLen))
|
||||
writer.WriteHeader(200)
|
||||
writer.Write(response)
|
||||
writer.Write(paddedResponse)
|
||||
}
|
||||
|
||||
func (proxy *Proxy) localDoHListener(acceptPc *net.TCPListener) {
|
||||
|
|
Loading…
Add table
Reference in a new issue