From 821a08a6e39ed0e7c43b0271ccf126c194eb6339 Mon Sep 17 00:00:00 2001 From: Francis Lavoie Date: Tue, 20 Sep 2022 10:09:04 -0400 Subject: [PATCH] httpcaddyfile: Fix `protocols` global option parsing (#5054) * httpcaddyfile: Fix `protocols` global option parsing When checking for a block, the current nesting must be used, otherwise it returns the wrong thing. * Adjust adapt test to cover the broken behaviour that is now fixed * Fix some admin tests which suddenly run even with -short --- admin_test.go | 2 +- caddyconfig/httpcaddyfile/serveroptions.go | 2 +- .../caddyfile_adapt/global_server_options_single.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/admin_test.go b/admin_test.go index d53988b3475..04aa8867fc3 100644 --- a/admin_test.go +++ b/admin_test.go @@ -161,7 +161,7 @@ func (fooModule) Stop() error { return nil } func TestETags(t *testing.T) { RegisterModule(fooModule{}) - if err := Load([]byte(`{"apps": {"foo": {"strField": "abc", "intField": 0}}}`), true); err != nil { + if err := Load([]byte(`{"admin": {"listen": "localhost:2999"}, "apps": {"foo": {"strField": "abc", "intField": 0}}}`), true); err != nil { t.Fatalf("loading: %s", err) } diff --git a/caddyconfig/httpcaddyfile/serveroptions.go b/caddyconfig/httpcaddyfile/serveroptions.go index 8e021fd5d81..8ab8969de31 100644 --- a/caddyconfig/httpcaddyfile/serveroptions.go +++ b/caddyconfig/httpcaddyfile/serveroptions.go @@ -162,7 +162,7 @@ func unmarshalCaddyfileServerOptions(d *caddyfile.Dispenser) (any, error) { } serverOpts.Protocols = append(serverOpts.Protocols, proto) } - if d.NextBlock(0) { + if nesting := d.Nesting(); d.NextBlock(nesting) { return nil, d.ArgErr() } diff --git a/caddytest/integration/caddyfile_adapt/global_server_options_single.txt b/caddytest/integration/caddyfile_adapt/global_server_options_single.txt index cfe6bfdfe34..5fb67392954 100644 --- a/caddytest/integration/caddyfile_adapt/global_server_options_single.txt +++ b/caddytest/integration/caddyfile_adapt/global_server_options_single.txt @@ -12,8 +12,8 @@ } max_header_size 100MB log_credentials - strict_sni_host protocols h1 h2 h2c h3 + strict_sni_host } }