Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
Mirrored from https://github.com/Slazee/caddy.git
Synced Nov 12, 22:00 UTC
reverseproxy: fix parsing Caddyfile fails for unlimited request/response buffers (#5828)
Fred Cox committed
Oct 11, 2023 at 09:42 UTC
b245ecd325428966ac4e4c208e268967d0e0cb83
2 files changed
+70
-5
caddytest/integration/caddyfile_adapt/reverse_proxy_buffers.txt
new
+58
@@ -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
+12
-5
@@ -551,17 +551,24 @@ func (h *Handler) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
551
if !d.NextArg() {
552
return d.ArgErr()
553
}
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)
564
}
565
if d.NextArg() {
566
return d.ArgErr()
567
}
568
if subdir == "request_buffers" {
562
- h.RequestBuffers = int64(size)
569
+ h.RequestBuffers = size
570
} else if subdir == "response_buffers" {
564
- h.ResponseBuffers = int64(size)
571
+ h.ResponseBuffers = size
572
}
573
574
// TODO: These three properties are deprecated; remove them sometime after v2.6.4