Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package caddy for openSUSE:Factory checked 
in at 2023-05-02 16:19:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/caddy (Old)
 and      /work/SRC/openSUSE:Factory/.caddy.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "caddy"

Tue May  2 16:19:17 2023 rev:15 rq:1083957 version:2.6.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/caddy/caddy.changes      2023-02-09 
16:23:41.238861431 +0100
+++ /work/SRC/openSUSE:Factory/.caddy.new.1533/caddy.changes    2023-05-02 
16:24:01.863591068 +0200
@@ -1,0 +2,20 @@
+Sun Apr 30 18:17:39 UTC 2023 - Jeff Kowalczyk <[email protected]>
+
+- Fix failing build on SLE-12 by defining _sharedstatedir /var/lib
+  on SLE-12 consistent with SLE-15, openSUSE and upstream RPM docs.
+  * SLE-12 _sharedstatedir was /usr/com, _localstatedir is /var as expected
+  * SLE-15+ _sharedstatedir is /var/lib, _localstatedir is /var
+  * _sharedstatedir used here as home directory for newly created user caddy
+  * If not redefined build fails with empty /usr/com not owned by any package
+  * Switch to useradd -d %{_sharedstatedir} from %{_localstatedir}/lib
+    The latter is common in Factory packages possibly for historical reasons,
+    opt for the less common option here for equivalence and clarity.
+
+-------------------------------------------------------------------
+Sat Apr 29 22:23:15 UTC 2023 - [email protected]
+
+- Update to version 2.6.4:
+  * go.mod: Upgrade acmez and x/net
+  * reverseproxy: Don't buffer chunked requests (fix #5366) (#5367)
+
+-------------------------------------------------------------------

Old:
----
  caddy-2.6.3.tar.gz

New:
----
  caddy-2.6.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ caddy.spec ++++++
--- /var/tmp/diff_new_pack.OYRaVh/_old  2023-05-02 16:24:02.563595219 +0200
+++ /var/tmp/diff_new_pack.OYRaVh/_new  2023-05-02 16:24:02.567595243 +0200
@@ -18,8 +18,16 @@
 
 %define project github.com/caddyserver/caddy
 
+# SLE-12 _sharedstatedir was /usr/com, _localstatedir is /var as expected
+# SLE-15+ _sharedstatedir is /var/lib, _localstatedir is /var
+# _sharedstatedir used here as home directory for newly created user caddy
+# If not redefined build fails with empty /usr/com not owned by any package
+%if 0%{?suse_version} < 1500
+%define _sharedstatedir /var/lib
+%endif
+
 Name:           caddy
-Version:        2.6.3
+Version:        2.6.4
 Release:        0
 Summary:        Fast, multi-platform web server with automatic HTTPS
 License:        Apache-2.0
@@ -83,7 +91,7 @@
 
 %pre
 getent group %{name} >/dev/null || %{_sbindir}/groupadd -r %{name}
-getent passwd %{name} >/dev/null || %{_sbindir}/useradd -r -g %{name} -d 
%{_localstatedir}/lib/%{name} -s /bin/false -c "Caddy web server" %{name}
+getent passwd %{name} >/dev/null || %{_sbindir}/useradd -r -g %{name} -d 
%{_sharedstatedir}/%{name} -s /bin/false -c "Caddy web server" %{name}
 %service_add_pre %{name}.service
 
 %post

++++++ _service ++++++
--- /var/tmp/diff_new_pack.OYRaVh/_old  2023-05-02 16:24:02.619595551 +0200
+++ /var/tmp/diff_new_pack.OYRaVh/_new  2023-05-02 16:24:02.623595575 +0200
@@ -5,7 +5,7 @@
     <param name="filename">caddy</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
-    <param name="revision">v2.6.3</param>
+    <param name="revision">v2.6.4</param>
     <param name="changesgenerate">enable</param>
 </service>
   <service mode="disabled" name="set_version">

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.OYRaVh/_old  2023-05-02 16:24:02.643595694 +0200
+++ /var/tmp/diff_new_pack.OYRaVh/_new  2023-05-02 16:24:02.647595718 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/caddyserver/caddy.git</param>
-              <param 
name="changesrevision">90798f3eea6b7a219a9bb55f680919c0504263e3</param></service></servicedata>
+              <param 
name="changesrevision">0db29e2ce9799f652f3d16fd5aed6e426d23bd0a</param></service></servicedata>
 (No newline at EOF)
 

++++++ caddy-2.6.3.tar.gz -> caddy-2.6.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/caddy-2.6.3/go.mod new/caddy-2.6.4/go.mod
--- old/caddy-2.6.3/go.mod      2023-02-08 18:49:17.000000000 +0100
+++ new/caddy-2.6.4/go.mod      2023-02-14 20:08:31.000000000 +0100
@@ -14,7 +14,7 @@
        github.com/google/uuid v1.3.0
        github.com/klauspost/compress v1.15.15
        github.com/klauspost/cpuid/v2 v2.2.3
-       github.com/mholt/acmez v1.0.4
+       github.com/mholt/acmez v1.1.0
        github.com/prometheus/client_golang v1.14.0
        github.com/quic-go/quic-go v0.32.0
        github.com/smallstep/certificates v0.23.2
@@ -31,7 +31,7 @@
        go.opentelemetry.io/otel/sdk v1.13.0
        go.uber.org/zap v1.24.0
        golang.org/x/crypto v0.5.0
-       golang.org/x/net v0.5.0
+       golang.org/x/net v0.7.0
        golang.org/x/sync v0.1.0
        golang.org/x/term v0.5.0
        google.golang.org/genproto v0.0.0-20230202175211-008b39050e57
@@ -132,7 +132,7 @@
        go.uber.org/multierr v1.6.0 // indirect
        golang.org/x/mod v0.6.0 // indirect
        golang.org/x/sys v0.5.0
-       golang.org/x/text v0.6.0 // indirect
+       golang.org/x/text v0.7.0 // indirect
        golang.org/x/tools v0.2.0 // indirect
        google.golang.org/grpc v1.52.3 // indirect
        google.golang.org/protobuf v1.28.1 // indirect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/caddy-2.6.3/go.sum new/caddy-2.6.4/go.sum
--- old/caddy-2.6.3/go.sum      2023-02-08 18:49:17.000000000 +0100
+++ new/caddy-2.6.4/go.sum      2023-02-14 20:08:31.000000000 +0100
@@ -91,7 +91,6 @@
 github.com/aws/aws-sdk-go v1.44.185 
h1:stasiou+Ucx2A0RyXRyPph4sLCBxVQK7DPPK8tNcl5g=
 github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod 
h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
 github.com/benbjohnson/clock v1.1.0 
h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
-github.com/benbjohnson/clock v1.1.0/go.mod 
h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
 github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod 
h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
 github.com/beorn7/perks v1.0.0/go.mod 
h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
 github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
@@ -465,8 +464,8 @@
 github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod 
h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d 
h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI=
 github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod 
h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
-github.com/mholt/acmez v1.0.4 h1:N3cE4Pek+dSolbsofIkAYz6H1d3pE+2G0os7QHslf80=
-github.com/mholt/acmez v1.0.4/go.mod 
h1:qFGLZ4u+ehWINeJZjzPlsnjJBCPAADWTcIqE/7DAYQY=
+github.com/mholt/acmez v1.1.0 h1:IQ9CGHKOHokorxnffsqDvmmE30mDenO1lptYZ1AYkHY=
+github.com/mholt/acmez v1.1.0/go.mod 
h1:zwo5+fbLLTowAX8o8ETfQzbDtwGEXnPhkmGdKIP+bgs=
 github.com/micromdm/scep/v2 v2.1.0 
h1:2fS9Rla7qRR266hvUoEauBJ7J6FhgssEiq2OkSKXmaU=
 github.com/micromdm/scep/v2 v2.1.0/go.mod 
h1:BkF7TkPPhmgJAMtHfP+sFTKXmgzNJgLQlvvGoOExBcc=
 github.com/miekg/dns v1.0.14/go.mod 
h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
@@ -738,7 +737,6 @@
 go.uber.org/atomic v1.7.0/go.mod 
h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
 go.uber.org/atomic v1.9.0/go.mod 
h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-go.uber.org/goleak v1.1.11/go.mod 
h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
 go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA=
 go.uber.org/goleak v1.1.12/go.mod 
h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
 go.uber.org/multierr v1.1.0/go.mod 
h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
@@ -750,7 +748,6 @@
 go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
 go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
 go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
-go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw=
 go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
 go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
 golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod 
h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
@@ -852,11 +849,10 @@
 golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod 
h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod 
h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
 golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod 
h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
-golang.org/x/net v0.0.0-20220630215102-69896b714898/go.mod 
h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod 
h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
-golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw=
-golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
+golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
+golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod 
h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod 
h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod 
h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -960,8 +956,8 @@
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k=
-golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
+golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod 
h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod 
h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod 
h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -1148,12 +1144,10 @@
 gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod 
h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod 
h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod 
h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/caddy-2.6.3/modules/caddyhttp/reverseproxy/caddyfile.go 
new/caddy-2.6.4/modules/caddyhttp/reverseproxy/caddyfile.go
--- old/caddy-2.6.3/modules/caddyhttp/reverseproxy/caddyfile.go 2023-02-08 
18:49:17.000000000 +0100
+++ new/caddy-2.6.4/modules/caddyhttp/reverseproxy/caddyfile.go 2023-02-14 
20:08:31.000000000 +0100
@@ -521,19 +521,39 @@
                                        h.FlushInterval = caddy.Duration(dur)
                                }
 
-                       case "buffer_requests":
+                       case "request_buffers", "response_buffers":
+                               subdir := d.Val()
+                               if !d.NextArg() {
+                                       return d.ArgErr()
+                               }
+                               size, err := humanize.ParseBytes(d.Val())
+                               if err != nil {
+                                       return d.Errf("invalid byte size '%s': 
%v", d.Val(), err)
+                               }
                                if d.NextArg() {
                                        return d.ArgErr()
                                }
-                               h.BufferRequests = true
+                               if subdir == "request_buffers" {
+                                       h.RequestBuffers = int64(size)
+                               } else if subdir == "response_buffers" {
+                                       h.ResponseBuffers = int64(size)
 
-                       case "buffer_responses":
+                               }
+
+                       // TODO: These three properties are deprecated; remove 
them sometime after v2.6.4
+                       case "buffer_requests": // TODO: deprecated
                                if d.NextArg() {
                                        return d.ArgErr()
                                }
-                               h.BufferResponses = true
-
-                       case "max_buffer_size":
+                               
caddy.Log().Named("config.adapter.caddyfile").Warn("DEPRECATED: 
buffer_requests: use request_buffers instead (with a maximum buffer size)")
+                               h.DeprecatedBufferRequests = true
+                       case "buffer_responses": // TODO: deprecated
+                               if d.NextArg() {
+                                       return d.ArgErr()
+                               }
+                               
caddy.Log().Named("config.adapter.caddyfile").Warn("DEPRECATED: 
buffer_responses: use response_buffers instead (with a maximum buffer size)")
+                               h.DeprecatedBufferResponses = true
+                       case "max_buffer_size": // TODO: deprecated
                                if !d.NextArg() {
                                        return d.ArgErr()
                                }
@@ -544,7 +564,8 @@
                                if d.NextArg() {
                                        return d.ArgErr()
                                }
-                               h.MaxBufferSize = int64(size)
+                               
caddy.Log().Named("config.adapter.caddyfile").Warn("DEPRECATED: 
max_buffer_size: use request_buffers and/or response_buffers instead (with 
maximum buffer sizes)")
+                               h.DeprecatedMaxBufferSize = int64(size)
 
                        case "trusted_proxies":
                                for d.NextArg() {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/caddy-2.6.3/modules/caddyhttp/reverseproxy/reverseproxy.go 
new/caddy-2.6.4/modules/caddyhttp/reverseproxy/reverseproxy.go
--- old/caddy-2.6.3/modules/caddyhttp/reverseproxy/reverseproxy.go      
2023-02-08 18:49:17.000000000 +0100
+++ new/caddy-2.6.4/modules/caddyhttp/reverseproxy/reverseproxy.go      
2023-02-14 20:08:31.000000000 +0100
@@ -136,21 +136,27 @@
        // are also set implicitly.
        Headers *headers.Handler `json:"headers,omitempty"`
 
-       // If true, the entire request body will be read and buffered
-       // in memory before being proxied to the backend. This should
-       // be avoided if at all possible for performance reasons, but
-       // could be useful if the backend is intolerant of read latency.
-       BufferRequests bool `json:"buffer_requests,omitempty"`
-
-       // If true, the entire response body will be read and buffered
-       // in memory before being proxied to the client. This should
-       // be avoided if at all possible for performance reasons, but
-       // could be useful if the backend has tighter memory constraints.
-       BufferResponses bool `json:"buffer_responses,omitempty"`
+       // DEPRECATED: Do not use; will be removed. See request_buffers instead.
+       DeprecatedBufferRequests bool `json:"buffer_requests,omitempty"`
+
+       // DEPRECATED: Do not use; will be removed. See response_buffers 
instead.
+       DeprecatedBufferResponses bool `json:"buffer_responses,omitempty"`
 
-       // If body buffering is enabled, the maximum size of the buffers
-       // used for the requests and responses (in bytes).
-       MaxBufferSize int64 `json:"max_buffer_size,omitempty"`
+       // DEPRECATED: Do not use; will be removed. See request_buffers and 
response_buffers instead.
+       DeprecatedMaxBufferSize int64 `json:"max_buffer_size,omitempty"`
+
+       // If nonzero, the entire request body up to this size will be read
+       // and buffered in memory before being proxied to the backend. This
+       // should be avoided if at all possible for performance reasons, but
+       // could be useful if the backend is intolerant of read latency or
+       // chunked encodings.
+       RequestBuffers int64 `json:"request_buffers,omitempty"`
+
+       // If nonzero, the entire response body up to this size will be read
+       // and buffered in memory before being proxied to the client. This
+       // should be avoided if at all possible for performance reasons, but
+       // could be useful if the backend has tighter memory constraints.
+       ResponseBuffers int64 `json:"response_buffers,omitempty"`
 
        // If configured, rewrites the copy of the upstream request.
        // Allows changing the request method and URI (path and query).
@@ -221,11 +227,28 @@
        h.connections = make(map[io.ReadWriteCloser]openConnection)
        h.connectionsMu = new(sync.Mutex)
 
+       // TODO: remove deprecated fields sometime after v2.6.4
+       if h.DeprecatedBufferRequests {
+               h.logger.Warn("DEPRECATED: buffer_requests: this property will 
be removed soon; use request_buffers instead (and set a maximum buffer size)")
+       }
+       if h.DeprecatedBufferResponses {
+               h.logger.Warn("DEPRECATED: buffer_responses: this property will 
be removed soon; use response_buffers instead (and set a maximum buffer size)")
+       }
+       if h.DeprecatedMaxBufferSize != 0 {
+               h.logger.Warn("DEPRECATED: max_buffer_size: this property will 
be removed soon; use request_buffers and/or response_buffers instead (and set 
maximum buffer sizes)")
+       }
+
+       // warn about unsafe buffering config
+       if h.RequestBuffers == -1 || h.ResponseBuffers == -1 {
+               h.logger.Warn("UNLIMITED BUFFERING: buffering is enabled 
without any cap on buffer size, which can result in OOM crashes")
+       }
+
        // verify SRV compatibility - TODO: LookupSRV deprecated; will be 
removed
        for i, v := range h.Upstreams {
                if v.LookupSRV == "" {
                        continue
                }
+               h.logger.Warn("DEPRECATED: lookup_srv: will be removed in a 
near-future version of Caddy; use the http.reverse_proxy.upstreams.srv module 
instead")
                if h.HealthChecks != nil && h.HealthChecks.Active != nil {
                        return fmt.Errorf(`upstream: lookup_srv is incompatible 
with active health checks: %d: {"dial": %q, "lookup_srv": %q}`, i, v.Dial, 
v.LookupSRV)
                }
@@ -622,9 +645,8 @@
        // attacks, so it is strongly recommended to only use this
        // feature if absolutely required, if read timeouts are
        // set, and if body size is limited
-       if (h.BufferRequests || isChunkedRequest(req)) && req.Body != nil {
-               req.Body, req.ContentLength = h.bufferedBody(req.Body)
-               req.Header.Set("Content-Length", 
strconv.FormatInt(req.ContentLength, 10))
+       if h.RequestBuffers != 0 && req.Body != nil {
+               req.Body, _ = h.bufferedBody(req.Body, h.RequestBuffers)
        }
 
        if req.ContentLength == 0 {
@@ -852,8 +874,8 @@
        }
 
        // if enabled, buffer the response body
-       if h.BufferResponses {
-               res.Body, _ = h.bufferedBody(res.Body)
+       if h.ResponseBuffers != 0 {
+               res.Body, _ = h.bufferedBody(res.Body, h.ResponseBuffers)
        }
 
        // see if any response handler is configured for this response from the 
backend
@@ -1122,15 +1144,20 @@
        }
 }
 
-// bufferedBody reads originalBody into a buffer, then returns a reader for 
the buffer.
-// Always close the return value when done with it, just like if it was the 
original body!
-func (h Handler) bufferedBody(originalBody io.ReadCloser) (io.ReadCloser, 
int64) {
+// bufferedBody reads originalBody into a buffer with maximum size of limit 
(-1 for unlimited),
+// then returns a reader for the buffer along with how many bytes were 
buffered. Always close
+// the return value when done with it, just like if it was the original body! 
If limit is 0
+// (which it shouldn't be), this function returns its input; i.e. is a no-op, 
for safety.
+func (h Handler) bufferedBody(originalBody io.ReadCloser, limit int64) 
(io.ReadCloser, int64) {
+       if limit == 0 {
+               return originalBody, 0
+       }
        var written int64
        buf := bufPool.Get().(*bytes.Buffer)
        buf.Reset()
-       if h.MaxBufferSize > 0 {
-               n, err := io.CopyN(buf, originalBody, h.MaxBufferSize)
-               if err != nil || n == h.MaxBufferSize {
+       if limit > 0 {
+               n, err := io.CopyN(buf, originalBody, limit)
+               if err != nil || n == limit {
                        return bodyReadCloser{
                                Reader: io.MultiReader(buf, originalBody),
                                buf:    buf,
@@ -1147,15 +1174,6 @@
        }, written
 }
 
-func isChunkedRequest(req *http.Request) bool {
-       for _, transferEncoding := range req.TransferEncoding {
-               if transferEncoding == "chunked" {
-                       return true
-               }
-       }
-       return false
-}
-
 // cloneRequest makes a semi-deep clone of origReq.
 //
 // Most of this code is borrowed from the Go stdlib reverse proxy,

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/caddy/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.caddy.new.1533/vendor.tar.gz differ: char 5, line 1

Reply via email to