diff --git a/common/config/config.go b/common/config/config.go index 44327139..5bd75d47 100644 --- a/common/config/config.go +++ b/common/config/config.go @@ -110,6 +110,7 @@ var BatchUpdateEnabled = false var BatchUpdateInterval = helper.GetOrDefaultEnvInt("BATCH_UPDATE_INTERVAL", 5) var RelayTimeout = helper.GetOrDefaultEnvInt("RELAY_TIMEOUT", 0) // unit is second +var IdleTimeout = helper.GetOrDefaultEnvInt("IDLE_TIMEOUT", 30) // unit is second var GeminiSafetySetting = helper.GetOrDefaultEnvString("GEMINI_SAFETY_SETTING", "BLOCK_NONE") diff --git a/relay/util/init.go b/relay/util/init.go index 03dad31b..cc3af6d9 100644 --- a/relay/util/init.go +++ b/relay/util/init.go @@ -10,15 +10,24 @@ var HTTPClient *http.Client var ImpatientHTTPClient *http.Client func init() { + + tp := &http.Transport{ + IdleConnTimeout: time.Duration(config.IdleTimeout) * time.Second, + } + if config.RelayTimeout == 0 { - HTTPClient = &http.Client{} + HTTPClient = &http.Client{ + Transport: tp, + } } else { HTTPClient = &http.Client{ - Timeout: time.Duration(config.RelayTimeout) * time.Second, + Transport: tp, + Timeout: time.Duration(config.RelayTimeout) * time.Second, } } ImpatientHTTPClient = &http.Client{ - Timeout: 5 * time.Second, + Transport: tp, + Timeout: 5 * time.Second, } }