Skip to content

Commit 9b948a1

Browse files
committed
Merge branch 'master' of github.com:DNSCrypt/dnscrypt-proxy
* 'master' of github.com:DNSCrypt/dnscrypt-proxy: Add jsdelivr as an alternative source URL Before probing HTTP/3, check a negative cache
2 parents c980483 + 0f4ac5f commit 9b948a1

2 files changed

Lines changed: 15 additions & 7 deletions

File tree

dnscrypt-proxy/example-dnscrypt-proxy.toml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -769,6 +769,7 @@ format = 'tsv'
769769
urls = [
770770
'https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md',
771771
'https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md',
772+
'https://cdn.jsdelivr.net/gh/DNSCrypt/dnscrypt-resolvers@master/v3/public-resolvers.md'
772773
]
773774
cache_file = 'public-resolvers.md'
774775
minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
@@ -781,6 +782,7 @@ prefix = ''
781782
urls = [
782783
'https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/relays.md',
783784
'https://download.dnscrypt.info/resolvers-list/v3/relays.md',
785+
'https://cdn.jsdelivr.net/gh/DNSCrypt/dnscrypt-resolvers@master/v3/relays.md'
784786
]
785787
cache_file = 'relays.md'
786788
minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
@@ -790,13 +792,13 @@ prefix = ''
790792
### ODoH (Oblivious DoH) servers and relays
791793

792794
# [sources.odoh-servers]
793-
# urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/odoh-servers.md', 'https://download.dnscrypt.info/resolvers-list/v3/odoh-servers.md']
795+
# urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/odoh-servers.md', 'https://download.dnscrypt.info/resolvers-list/v3/odoh-servers.md', 'https://cdn.jsdelivr.net/gh/DNSCrypt/dnscrypt-resolvers@master/v3/odoh-servers.md']
794796
# cache_file = 'odoh-servers.md'
795797
# minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
796798
# refresh_delay = 73
797799
# prefix = ''
798800
# [sources.odoh-relays]
799-
# urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/odoh-relays.md', 'https://download.dnscrypt.info/resolvers-list/v3/odoh-relays.md']
801+
# urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/odoh-relays.md', 'https://download.dnscrypt.info/resolvers-list/v3/odoh-relays.md', 'https://cdn.jsdelivr.net/gh/DNSCrypt/dnscrypt-resolvers@master/v3/odoh-relays.md']
800802
# cache_file = 'odoh-relays.md'
801803
# minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
802804
# refresh_delay = 73
@@ -814,7 +816,7 @@ prefix = ''
814816
### This is a subset of the `public-resolvers` list, so enabling both is useless.
815817

816818
# [sources.parental-control]
817-
# urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/parental-control.md', 'https://download.dnscrypt.info/resolvers-list/v3/parental-control.md']
819+
# urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/parental-control.md', 'https://download.dnscrypt.info/resolvers-list/v3/parental-control.md', 'https://cdn.jsdelivr.net/gh/DNSCrypt/dnscrypt-resolvers@master/v3/parental-control.md']
818820
# cache_file = 'parental-control.md'
819821
# minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
820822

dnscrypt-proxy/xtransport.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -653,10 +653,16 @@ func (xTransport *XTransport) Fetch(
653653

654654
if xTransport.h3Transport != nil {
655655
if xTransport.http3Probe {
656-
// Always try HTTP/3 first when http3_probe is enabled,
657-
// without checking for Alt-Svc
658-
client.Transport = xTransport.h3Transport
659-
dlog.Debugf("Probing HTTP/3 transport for [%s]", url.Host)
656+
xTransport.altSupport.RLock()
657+
altPort, inNegativeCache := xTransport.altSupport.cache[url.Host]
658+
inNegativeCache = inNegativeCache && altPort == 0
659+
xTransport.altSupport.RUnlock()
660+
if !inNegativeCache {
661+
client.Transport = xTransport.h3Transport
662+
dlog.Debugf("Probing HTTP/3 transport for [%s]", url.Host)
663+
} else {
664+
dlog.Debugf("Skipping HTTP/3 probe for [%s] - previously failed", url.Host)
665+
}
660666
} else {
661667
// Otherwise use traditional Alt-Svc detection
662668
xTransport.altSupport.RLock()

0 commit comments

Comments
 (0)