diff --git a/OrbitalBeat.go b/OrbitalBeat.go index 18e64e7..6cfa51c 100644 --- a/OrbitalBeat.go +++ b/OrbitalBeat.go @@ -772,6 +772,8 @@ func main() { 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.") flag.Parse() @@ -916,42 +918,45 @@ func main() { } }(&wg) - wg.Add(1) - go func(wg *sync.WaitGroup) { - defer wg.Done() + if *http3Option { - server := &http3.Server{ - Server: &http.Server{ - Addr: *listenAddress, - TLSConfig: &tls.Config{ - GetCertificate: func(info *tls.ClientHelloInfo) (*tls.Certificate, error) { - if isSNIAllowed(info.ServerName) { - return &serverCertificate, nil - } - return &bogusCertificate, nil + wg.Add(1) + go func(wg *sync.WaitGroup) { + defer wg.Done() + + server := &http3.Server{ + Server: &http.Server{ + Addr: *listenAddress, + TLSConfig: &tls.Config{ + 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{} - server.SetQuicHeaders(h) - extraHeadersMutex.Lock() - extraHeaders["Alt-Svc"] = h.Get("Alt-Svc") - extraHeadersMutex.Unlock() + h := http.Header{} + server.SetQuicHeaders(h) + extraHeadersMutex.Lock() + extraHeaders["Alt-Svc"] = h.Get("Alt-Svc") + extraHeadersMutex.Unlock() - log.Printf("Serving UDP on %s", *listenAddress) - err = server.ListenAndServe() - if err != nil { - log.Panic(err) - } - }(&wg) + log.Printf("Serving UDP on %s", *listenAddress) + err = server.ListenAndServe() + if err != nil { + log.Panic(err) + } + }(&wg) + } wg.Wait() }