Skip to content

Commit 5ca22d1

Browse files
author
Krzysztof Wilczyński
committed
Set ResponseHeaderTimeout field to the desired upstream timeout value
Signed-off-by: Krzysztof Wilczyński <kwilczynski@redhat.com>
1 parent 9bc3533 commit 5ca22d1

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

oauthproxy.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ func NewReverseProxy(target *url.URL, opts *Options) (*httputil.ReverseProxy, er
119119
transport.MaxIdleConnsPerHost = 500
120120
transport.IdleConnTimeout = 1 * time.Minute
121121

122+
// Change default duration for waiting for an upstream response
123+
transport.ResponseHeaderTimeout = opts.Timeout
124+
122125
if len(opts.UpstreamCAs) > 0 {
123126
pool, err := util.GetCertPool(opts.UpstreamCAs, false)
124127
if err != nil {

oauthproxy_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,34 @@ func TestEncodedSlashes(t *testing.T) {
173173
assert.Equal(t, encodedPath, seen)
174174
}
175175

176+
func TestNewReverseProxyWithTimeOut(t *testing.T) {
177+
opts := NewOptions()
178+
opts.Timeout = 1 * time.Millisecond
179+
180+
backend := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
181+
time.Sleep(5 * time.Millisecond)
182+
}))
183+
defer backend.Close()
184+
185+
proxyURL, err := url.Parse(backend.URL)
186+
require.NoError(t, err)
187+
188+
proxyHandler, err := NewReverseProxy(proxyURL, opts)
189+
require.NoError(t, err)
190+
191+
setProxyUpstreamHostHeader(proxyHandler, proxyURL)
192+
frontend := httptest.NewServer(proxyHandler)
193+
defer frontend.Close()
194+
195+
getReq, err := http.NewRequest("GET", frontend.URL, nil)
196+
require.NoError(t, err)
197+
198+
res, err := http.DefaultClient.Do(getReq)
199+
require.NoError(t, err)
200+
201+
assert.Equal(t, "502 Bad Gateway", res.Status)
202+
}
203+
176204
func TestRobotsTxt(t *testing.T) {
177205
opts := NewOptions()
178206
opts.ClientID = "bazquux"

0 commit comments

Comments
 (0)