Skip to content

Commit b245ecd

Browse files
authored
reverseproxy: fix parsing Caddyfile fails for unlimited request/response buffers (#5828)
1 parent 2a6859a commit b245ecd

File tree

2 files changed

+70
-5
lines changed

2 files changed

+70
-5
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
https://example.com {
2+
reverse_proxy https://localhost:54321 {
3+
request_buffers unlimited
4+
response_buffers unlimited
5+
}
6+
}
7+
8+
----------
9+
{
10+
"apps": {
11+
"http": {
12+
"servers": {
13+
"srv0": {
14+
"listen": [
15+
":443"
16+
],
17+
"routes": [
18+
{
19+
"match": [
20+
{
21+
"host": [
22+
"example.com"
23+
]
24+
}
25+
],
26+
"handle": [
27+
{
28+
"handler": "subroute",
29+
"routes": [
30+
{
31+
"handle": [
32+
{
33+
"handler": "reverse_proxy",
34+
"request_buffers": -1,
35+
"response_buffers": -1,
36+
"transport": {
37+
"protocol": "http",
38+
"tls": {}
39+
},
40+
"upstreams": [
41+
{
42+
"dial": "localhost:54321"
43+
}
44+
]
45+
}
46+
]
47+
}
48+
]
49+
}
50+
],
51+
"terminal": true
52+
}
53+
]
54+
}
55+
}
56+
}
57+
}
58+
}

modules/caddyhttp/reverseproxy/caddyfile.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -551,17 +551,24 @@ func (h *Handler) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
551551
if !d.NextArg() {
552552
return d.ArgErr()
553553
}
554-
size, err := humanize.ParseBytes(d.Val())
555-
if err != nil {
556-
return d.Errf("invalid byte size '%s': %v", d.Val(), err)
554+
val := d.Val()
555+
var size int64
556+
if val == "unlimited" {
557+
size = -1
558+
} else {
559+
usize, err := humanize.ParseBytes(val)
560+
if err != nil {
561+
return d.Errf("invalid byte size '%s': %v", val, err)
562+
}
563+
size = int64(usize)
557564
}
558565
if d.NextArg() {
559566
return d.ArgErr()
560567
}
561568
if subdir == "request_buffers" {
562-
h.RequestBuffers = int64(size)
569+
h.RequestBuffers = size
563570
} else if subdir == "response_buffers" {
564-
h.ResponseBuffers = int64(size)
571+
h.ResponseBuffers = size
565572
}
566573

567574
// TODO: These three properties are deprecated; remove them sometime after v2.6.4

0 commit comments

Comments
 (0)