1
0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo.git synced 2025-08-06 17:40:57 +00:00
forgejo/modules/setting/http_client.go
2025-06-25 22:33:30 +02:00

43 lines
1.9 KiB
Go

// Copyright 2024 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package setting
import "time"
// HTTPClient represents configuration for HTTP client pooling
var HTTPClient = struct {
MaxIdleConns int `ini:"MAX_IDLE_CONNS"`
MaxIdleConnsPerHost int `ini:"MAX_IDLE_CONNS_PER_HOST"`
IdleConnTimeout time.Duration `ini:"IDLE_CONN_TIMEOUT"`
TLSHandshakeTimeout time.Duration `ini:"TLS_HANDSHAKE_TIMEOUT"`
ExpectContinueTimeout time.Duration `ini:"EXPECT_CONTINUE_TIMEOUT"`
DialTimeout time.Duration `ini:"DIAL_TIMEOUT"`
KeepAlive time.Duration `ini:"KEEP_ALIVE"`
DefaultTimeout time.Duration `ini:"DEFAULT_TIMEOUT"`
ForceHTTP2 bool `ini:"FORCE_HTTP2"`
}{
MaxIdleConns: 100,
MaxIdleConnsPerHost: 10,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
DialTimeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
DefaultTimeout: 60 * time.Second,
ForceHTTP2: true,
}
func loadHTTPClientFrom(rootCfg ConfigProvider) {
sec := rootCfg.Section("http_client")
HTTPClient.MaxIdleConns = sec.Key("MAX_IDLE_CONNS").MustInt(100)
HTTPClient.MaxIdleConnsPerHost = sec.Key("MAX_IDLE_CONNS_PER_HOST").MustInt(10)
HTTPClient.IdleConnTimeout = sec.Key("IDLE_CONN_TIMEOUT").MustDuration(90 * time.Second)
HTTPClient.TLSHandshakeTimeout = sec.Key("TLS_HANDSHAKE_TIMEOUT").MustDuration(10 * time.Second)
HTTPClient.ExpectContinueTimeout = sec.Key("EXPECT_CONTINUE_TIMEOUT").MustDuration(1 * time.Second)
HTTPClient.DialTimeout = sec.Key("DIAL_TIMEOUT").MustDuration(30 * time.Second)
HTTPClient.KeepAlive = sec.Key("KEEP_ALIVE").MustDuration(30 * time.Second)
HTTPClient.DefaultTimeout = sec.Key("DEFAULT_TIMEOUT").MustDuration(60 * time.Second)
HTTPClient.ForceHTTP2 = sec.Key("FORCE_HTTP2").MustBool(true)
}