Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions resolver.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,13 +137,13 @@ func newTransport(server string, transportType transport.Type, tlsConfig *tls.Co
log.Debugf("Using HTTP(s) transport: %s", server)

// Parse HTTP headers
headers := make(map[string]string)
headers := make(map[string][]string)
for _, header := range opts.HTTPHeaders {
parts := strings.SplitN(header, ":", 2)
if len(parts) == 2 {
name := strings.TrimSpace(parts[0])
value := strings.TrimSpace(parts[1])
headers[name] = value
headers[name] = append(headers[name], value)
log.Debugf("Added header %s: %s", name, value)
} else {
log.Warnf("Invalid header format: %s (expected 'Name: Value')", header)
Expand Down
10 changes: 6 additions & 4 deletions transport/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ type HTTP struct {
Method string
HTTP2, HTTP3 bool
NoPMTUd bool
Headers map[string]string
Headers map[string][]string

conn *http.Client
}
Expand Down Expand Up @@ -85,9 +85,11 @@ func (h *HTTP) Exchange(m *dns.Msg) (*dns.Msg, error) {

// Set custom headers if provided
if h.Headers != nil {
for name, value := range h.Headers {
log.Debugf("Setting custom header %s: %s", name, value)
req.Header.Set(name, value)
for name, values := range h.Headers {
for _, value := range values {
log.Debugf("Setting custom header %s: %s", name, value)
req.Header.Add(name, value)
}
}
}

Expand Down
Loading