diff --git a/internal/pkg/client/http.go b/internal/pkg/client/http.go index 444a9a47..d976d12c 100644 --- a/internal/pkg/client/http.go +++ b/internal/pkg/client/http.go @@ -17,6 +17,7 @@ import ( func getHTTPClient(endpoint string, insecure bool) *http.Client { transport := &http.Transport{ + Proxy: http.ProxyFromEnvironment, MaxIdleConns: 10, MaxIdleConnsPerHost: 10, // All requests go to one host; default is 2 which causes frequent reconnects. IdleConnTimeout: 90 * time.Second, diff --git a/internal/pkg/client/http_test.go b/internal/pkg/client/http_test.go new file mode 100644 index 00000000..9859d1d8 --- /dev/null +++ b/internal/pkg/client/http_test.go @@ -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()) +}