diff --git a/lib/gat/gatcaddyfile/gattype.go b/lib/gat/gatcaddyfile/gattype.go index 77a507a4bb14301d7b73caefa64fec1ebc4f4a91..1114f41870316cd997bdec921c3fe6137f4a9599 100644 --- a/lib/gat/gatcaddyfile/gattype.go +++ b/lib/gat/gatcaddyfile/gattype.go @@ -100,29 +100,41 @@ func (ServerType) Setup(blocks []caddyfile.ServerBlock, m map[string]any) (*cadd return nil, nil, d.Errf(`duplicate named matcher "%s"`, name) } - // read named matcher - if !d.NextBlock(0) { - return nil, nil, d.ArgErr() - } + var matcher json.RawMessage - for { - if d.Val() == "}" { - break + // read named matcher + if d.NextArg() { + // inline + } else { + // block + if !d.NextBlock(0) { + return nil, nil, d.ArgErr() } - log.Println(d.Val()) - for d.NextArg() { + for { + if d.Val() == "}" { + break + } + log.Println(d.Val()) - } + for d.NextArg() { + log.Println(d.Val()) + } - if !d.NextLine() { - return nil, nil, d.EOFErr() + if !d.NextLine() { + return nil, nil, d.EOFErr() + } } } if d.CountRemainingArgs() > 0 { return nil, nil, d.ArgErr() } + + if namedMatchers == nil { + namedMatchers = make(map[string]json.RawMessage) + } + namedMatchers[name] = matcher default: unmarshaller, ok := handlers[d.Val()] if !ok {