@marcel91200 / caddy Mirror · read-only / commits / b245ecd3
Fork 0

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