@@ -2,7 +2,6 @@ package web
22
33import (
44 "context"
5- "crypto/tls"
65 "errors"
76 "fmt"
87 "log/slog"
@@ -12,8 +11,6 @@ import (
1211 "github.com/coreos/go-systemd/v22/activation"
1312 "github.com/librespeed/speedtest/config"
1413 "github.com/pires/go-proxyproto"
15- "golang.org/x/net/http2"
16- "golang.org/x/net/http2/h2c"
1714)
1815
1916func startListener (ctx context.Context , conf * config.Config , r http.Handler ) error {
@@ -65,27 +62,24 @@ func startListener(ctx context.Context, conf *config.Config, r http.Handler) err
6562 srv := & http.Server {
6663 Handler : r ,
6764 }
65+ srv .Protocols = new (http.Protocols )
66+ srv .Protocols .SetHTTP1 (true )
67+
6868 var listenFn func () error
6969 // TLS and HTTP/2.
7070 if conf .EnableTLS {
7171 slog .Info ("Use TLS connection" )
72-
73- if ! conf .EnableHTTP2 {
74- // If TLSNextProto is not nil, HTTP/2 support is not enabled automatically.
75- srv .TLSNextProto = make (map [string ]func (* http.Server , * tls.Conn , http.Handler ))
72+ if conf .EnableHTTP2 {
73+ slog .Info ("Use HTTP2 connection." )
74+ srv .Protocols .SetHTTP2 (conf .EnableHTTP2 )
7675 }
7776 listenFn = func () error {
7877 return srv .ServeTLS (listener , conf .TLSCertFile , conf .TLSKeyFile )
7978 }
8079 } else {
8180 if conf .EnableHTTP2 {
8281 slog .Info ("Use HTTP2 connection." )
83- h2s := & http2.Server {}
84- srv .Handler = h2c .NewHandler (r , h2s )
85- err = http2 .ConfigureServer (srv , h2s )
86- if err != nil {
87- return fmt .Errorf ("http2.ConfigureServer: %s" , err )
88- }
82+ srv .Protocols .SetUnencryptedHTTP2 (conf .EnableHTTP2 )
8983 }
9084 listenFn = func () error {
9185 return srv .Serve (listener )
0 commit comments