proxy: allow 0 timeout to use system default (#88886)
gitea/passerelle/pipeline/head This commit looks good Details

This commit is contained in:
Thomas NOËL 2024-03-29 18:37:30 +01:00
parent 96c1e49e23
commit e6911e00be
3 changed files with 17 additions and 3 deletions

View File

@ -54,7 +54,9 @@ class Migration(migrations.Migration):
('upstream_base_url', models.URLField(verbose_name='Upstream Service Base URL')),
(
'http_timeout',
models.PositiveIntegerField(default=20, verbose_name='Timeout on upstream (in seconds)'),
models.PositiveIntegerField(
default=20, verbose_name='Timeout on upstream (in seconds, 0 for system default)'
),
),
(
'forced_headers',

View File

@ -36,7 +36,9 @@ class Resource(BaseResource, HTTPResource):
category = _('Misc')
upstream_base_url = models.URLField(_('Upstream Service Base URL'))
http_timeout = models.PositiveIntegerField(_('Timeout on upstream (in seconds)'), default=20)
http_timeout = models.PositiveIntegerField(
_('Timeout on upstream (in seconds, 0 for system default)'), default=20
)
forced_headers = models.TextField(
_('Headers'),
blank=True,
@ -84,7 +86,7 @@ class Resource(BaseResource, HTTPResource):
headers=headers,
params=params,
data=request.body,
timeout=self.http_timeout,
timeout=self.http_timeout or None,
)
response = HttpResponse(
upstream.content,

View File

@ -167,3 +167,13 @@ def test_timeout(mocked_responses, app, proxy, endpoint):
)
resp = app.get(endpoint + '/foo/bar', status=200)
assert resp.text == 'ok'
proxy.http_timeout = 0 # system default
proxy.save()
mocked_responses.get(
url='https://example.org/foo/bar',
body='ok',
match=[responses.matchers.request_kwargs_matcher({'timeout': None})],
)
resp = app.get(endpoint + '/foo/bar', status=200)
assert resp.text == 'ok'