mirror of
https://gitea.com/gitea/act_runner.git
synced 2026-05-14 20:03:24 +02:00
fix: respect proxy env vars in runner client (#962)
Fixes #957. ## Why The runner builds a custom `http.Transport` for its RPC client. From first principles, once we stop using the default transport we also stop inheriting its default proxy resolution behavior, so `HTTP_PROXY`/`HTTPS_PROXY` are ignored unless we wire that behavior back explicitly. ## What - set `Proxy: http.ProxyFromEnvironment` on the custom transport - add a regression test that verifies `getHTTPClient` honors proxy environment variables Reviewed-on: https://gitea.com/gitea/runner/pulls/962 Reviewed-by: ChristopherHX <38043+christopherhx@noreply.gitea.com>
This commit is contained in:
@@ -17,6 +17,7 @@ import (
|
|||||||
|
|
||||||
func getHTTPClient(endpoint string, insecure bool) *http.Client {
|
func getHTTPClient(endpoint string, insecure bool) *http.Client {
|
||||||
transport := &http.Transport{
|
transport := &http.Transport{
|
||||||
|
Proxy: http.ProxyFromEnvironment,
|
||||||
MaxIdleConns: 10,
|
MaxIdleConns: 10,
|
||||||
MaxIdleConnsPerHost: 10, // All requests go to one host; default is 2 which causes frequent reconnects.
|
MaxIdleConnsPerHost: 10, // All requests go to one host; default is 2 which causes frequent reconnects.
|
||||||
IdleConnTimeout: 90 * time.Second,
|
IdleConnTimeout: 90 * time.Second,
|
||||||
|
|||||||
27
internal/pkg/client/http_test.go
Normal file
27
internal/pkg/client/http_test.go
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
// Copyright 2026 The Gitea Authors. All rights reserved.
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
package client
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestGetHTTPClientUsesProxyFromEnvironment(t *testing.T) {
|
||||||
|
t.Setenv("HTTP_PROXY", "http://proxy.example.com:8080")
|
||||||
|
|
||||||
|
client := getHTTPClient("http://gitea.example.com", false)
|
||||||
|
transport, ok := client.Transport.(*http.Transport)
|
||||||
|
require.True(t, ok)
|
||||||
|
|
||||||
|
req, err := http.NewRequest(http.MethodGet, "http://gitea.example.com/api/actions/ping", nil)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
proxyURL, err := transport.Proxy(req)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotNil(t, proxyURL)
|
||||||
|
require.Equal(t, "http://proxy.example.com:8080", proxyURL.String())
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user