From 0c0397407c1d837903792ba3798f3c7a622a4c03 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Thu, 18 Mar 2021 11:33:30 +0100 Subject: [PATCH] Don't add "irc" in ALPN list for WebSocket servers This is incorrect because HTTP listeners don't handle plain IRC connections. This also prevents net/http from setting up an HTTP/2 server. --- cmd/soju/main.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/cmd/soju/main.go b/cmd/soju/main.go index 1d4e33b..8581d33 100644 --- a/cmd/soju/main.go +++ b/cmd/soju/main.go @@ -55,10 +55,7 @@ func main() { if err != nil { log.Fatalf("failed to load TLS certificate and key: %v", err) } - tlsCfg = &tls.Config{ - NextProtos: []string{"irc"}, - Certificates: []tls.Certificate{cert}, - } + tlsCfg = &tls.Config{Certificates: []tls.Certificate{cert}} } srv := soju.NewServer(db) @@ -89,7 +86,9 @@ func main() { if _, _, err := net.SplitHostPort(host); err != nil { host = host + ":6697" } - ln, err := tls.Listen("tcp", host, tlsCfg) + ircsTLSCfg := tlsCfg.Clone() + ircsTLSCfg.NextProtos = []string{"irc"} + ln, err := tls.Listen("tcp", host, ircsTLSCfg) if err != nil { log.Fatalf("failed to start TLS listener on %q: %v", listen, err) }