Lock while getting doh/doh3 transport

This commit is contained in:
Cuong Manh Le
2023-05-01 23:47:47 +07:00
committed by Cuong Manh Le
parent 704bc27dba
commit 4c45e6cf3d
3 changed files with 4 additions and 5 deletions

View File

@@ -380,6 +380,8 @@ func (uc *UpstreamConfig) isControlD() bool {
}
func (uc *UpstreamConfig) dohTransport(dnsType uint16) http.RoundTripper {
uc.mu.Lock()
defer uc.mu.Unlock()
switch uc.IPStack {
case IpStackBoth, IpStackV4, IpStackV6:
return uc.transport

View File

@@ -82,6 +82,8 @@ func (uc *UpstreamConfig) setupDOH3TransportWithoutPingUpstream() {
}
func (uc *UpstreamConfig) doh3Transport(dnsType uint16) http.RoundTripper {
uc.mu.Lock()
defer uc.mu.Unlock()
switch uc.IPStack {
case IpStackBoth, IpStackV4, IpStackV6:
return uc.http3RoundTripper

5
doh.go
View File

@@ -21,13 +21,9 @@ const (
)
func newDohResolver(uc *UpstreamConfig) *dohResolver {
uc.mu.Lock()
transport := uc.transport
uc.mu.Unlock()
r := &dohResolver{
endpoint: uc.u,
isDoH3: uc.Type == ResolverTypeDOH3,
transport: transport,
http3RoundTripper: uc.http3RoundTripper,
sendClientInfo: uc.UpstreamSendClientInfo(),
uc: uc,
@@ -39,7 +35,6 @@ type dohResolver struct {
uc *UpstreamConfig
endpoint *url.URL
isDoH3 bool
transport *http.Transport
http3RoundTripper http.RoundTripper
sendClientInfo bool
}