reverseproxy: fix parsing Caddyfile fails for unlimited request/response buffers (#5828)

This commit is contained in:
Fred Cox 2023-10-11 09:42:40 +01:00 committed by GitHub
parent 2a6859a5e4
commit b245ecd325
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 70 additions and 5 deletions

View file

@ -0,0 +1,58 @@
https://example.com {
reverse_proxy https://localhost:54321 {
request_buffers unlimited
response_buffers unlimited
}
}
----------
{
"apps": {
"http": {
"servers": {
"srv0": {
"listen": [
":443"
],
"routes": [
{
"match": [
{
"host": [
"example.com"
]
}
],
"handle": [
{
"handler": "subroute",
"routes": [
{
"handle": [
{
"handler": "reverse_proxy",
"request_buffers": -1,
"response_buffers": -1,
"transport": {
"protocol": "http",
"tls": {}
},
"upstreams": [
{
"dial": "localhost:54321"
}
]
}
]
}
]
}
],
"terminal": true
}
]
}
}
}
}
}

View file

@ -551,17 +551,24 @@ func (h *Handler) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
if !d.NextArg() { if !d.NextArg() {
return d.ArgErr() return d.ArgErr()
} }
size, err := humanize.ParseBytes(d.Val()) val := d.Val()
if err != nil { var size int64
return d.Errf("invalid byte size '%s': %v", d.Val(), err) if val == "unlimited" {
size = -1
} else {
usize, err := humanize.ParseBytes(val)
if err != nil {
return d.Errf("invalid byte size '%s': %v", val, err)
}
size = int64(usize)
} }
if d.NextArg() { if d.NextArg() {
return d.ArgErr() return d.ArgErr()
} }
if subdir == "request_buffers" { if subdir == "request_buffers" {
h.RequestBuffers = int64(size) h.RequestBuffers = size
} else if subdir == "response_buffers" { } else if subdir == "response_buffers" {
h.ResponseBuffers = int64(size) h.ResponseBuffers = size
} }
// TODO: These three properties are deprecated; remove them sometime after v2.6.4 // TODO: These three properties are deprecated; remove them sometime after v2.6.4