main: use x/net/http2 directly and add option to disable http2

This commit is contained in:
Tulir Asokan 2024-11-22 01:06:26 +02:00
parent 24c40fe484
commit 4349f7d75e
3 changed files with 19 additions and 1 deletions

View file

@ -33,9 +33,14 @@ import (
type Config struct {
Web WebConfig `yaml:"web"`
Matrix MatrixConfig `yaml:"matrix"`
Logging zeroconfig.Config `yaml:"logging"`
}
type MatrixConfig struct {
DisableHTTP2 bool `yaml:"disable_http2"`
}
type WebConfig struct {
ListenAddress string `yaml:"listen_address"`
Username string `yaml:"username"`
@ -59,6 +64,9 @@ func makeDefaultConfig() Config {
Web: WebConfig{
ListenAddress: "localhost:29325",
},
Matrix: MatrixConfig{
DisableHTTP2: false,
},
Logging: zeroconfig.Config{
MinLevel: ptr.Ptr(zerolog.DebugLevel),
Writers: []zeroconfig.WriterConfig{{

View file

@ -36,6 +36,7 @@ import (
"go.mau.fi/util/dbutil"
"go.mau.fi/util/exerrors"
"go.mau.fi/util/exzerolog"
"golang.org/x/net/http2"
"go.mau.fi/gomuks/pkg/hicli"
)
@ -176,6 +177,15 @@ func (gmx *Gomuks) StartClient() {
[]byte("meow"),
hicli.JSONEventHandler(gmx.OnEvent).HandleEvent,
)
httpClient := gmx.Client.Client.Client
httpClient.Transport.(*http.Transport).ForceAttemptHTTP2 = false
if !gmx.Config.Matrix.DisableHTTP2 {
_, err = http2.ConfigureTransports(httpClient.Transport.(*http.Transport))
if err != nil {
gmx.Log.WithLevel(zerolog.FatalLevel).Err(err).Msg("Failed to configure HTTP/2")
os.Exit(13)
}
}
userID, err := gmx.Client.DB.Account.GetFirstUserID(ctx)
if err != nil {
gmx.Log.WithLevel(zerolog.FatalLevel).Err(err).Msg("Failed to get first user ID")

View file

@ -103,7 +103,7 @@ func New(rawDB, cryptoDB *dbutil.Database, log zerolog.Logger, pickleKey []byte,
// Default settings from http.DefaultTransport
Proxy: http.ProxyFromEnvironment,
ForceAttemptHTTP2: true,
MaxIdleConns: 100,
MaxIdleConns: 5,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,