This commit is contained in:
parent
36cf69c1f5
commit
f73903d216
|
@ -772,6 +772,8 @@ func main() {
|
||||||
|
|
||||||
debugOption := flag.Bool("debug", false, "Output debug information.")
|
debugOption := flag.Bool("debug", false, "Output debug information.")
|
||||||
|
|
||||||
|
http3Option := flag.Bool("http3", false, "Enable HTTP/3")
|
||||||
|
|
||||||
signatureCacheLimitOption := flag.Int("siglimit", 4096, "Maximum number of lingering valid signature cache results.")
|
signatureCacheLimitOption := flag.Int("siglimit", 4096, "Maximum number of lingering valid signature cache results.")
|
||||||
|
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
@ -916,42 +918,45 @@ func main() {
|
||||||
}
|
}
|
||||||
}(&wg)
|
}(&wg)
|
||||||
|
|
||||||
wg.Add(1)
|
if *http3Option {
|
||||||
go func(wg *sync.WaitGroup) {
|
|
||||||
defer wg.Done()
|
|
||||||
|
|
||||||
server := &http3.Server{
|
wg.Add(1)
|
||||||
Server: &http.Server{
|
go func(wg *sync.WaitGroup) {
|
||||||
Addr: *listenAddress,
|
defer wg.Done()
|
||||||
TLSConfig: &tls.Config{
|
|
||||||
GetCertificate: func(info *tls.ClientHelloInfo) (*tls.Certificate, error) {
|
server := &http3.Server{
|
||||||
if isSNIAllowed(info.ServerName) {
|
Server: &http.Server{
|
||||||
return &serverCertificate, nil
|
Addr: *listenAddress,
|
||||||
}
|
TLSConfig: &tls.Config{
|
||||||
return &bogusCertificate, nil
|
GetCertificate: func(info *tls.ClientHelloInfo) (*tls.Certificate, error) {
|
||||||
|
if isSNIAllowed(info.ServerName) {
|
||||||
|
return &serverCertificate, nil
|
||||||
|
}
|
||||||
|
return &bogusCertificate, nil
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if debugOutput {
|
||||||
|
log.Print("Received HTTP/3 request")
|
||||||
|
}
|
||||||
|
handle(NewRequestContextFromHttp(w, r))
|
||||||
|
}),
|
||||||
},
|
},
|
||||||
Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
}
|
||||||
if debugOutput {
|
|
||||||
log.Print("Received HTTP/3 request")
|
|
||||||
}
|
|
||||||
handle(NewRequestContextFromHttp(w, r))
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
h := http.Header{}
|
h := http.Header{}
|
||||||
server.SetQuicHeaders(h)
|
server.SetQuicHeaders(h)
|
||||||
extraHeadersMutex.Lock()
|
extraHeadersMutex.Lock()
|
||||||
extraHeaders["Alt-Svc"] = h.Get("Alt-Svc")
|
extraHeaders["Alt-Svc"] = h.Get("Alt-Svc")
|
||||||
extraHeadersMutex.Unlock()
|
extraHeadersMutex.Unlock()
|
||||||
|
|
||||||
log.Printf("Serving UDP on %s", *listenAddress)
|
log.Printf("Serving UDP on %s", *listenAddress)
|
||||||
err = server.ListenAndServe()
|
err = server.ListenAndServe()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Panic(err)
|
log.Panic(err)
|
||||||
}
|
}
|
||||||
}(&wg)
|
}(&wg)
|
||||||
|
|
||||||
|
}
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue