fix: lazy check

This commit is contained in:
wwqgtxx
2022-10-30 23:08:18 +08:00
parent dedb9122df
commit b9d8b69889
10 changed files with 36 additions and 22 deletions

View File

@ -425,8 +425,15 @@ func match(metadata *C.Metadata) (C.Proxy, C.Rule, error) {
continue
}
// only unwrap one group, multi-layer nesting will be invalid
if adapter.Type() == C.Pass || (adapter.Unwrap(metadata) != nil && adapter.Unwrap(metadata).Type() == C.Pass) {
// parse multi-layer nesting
passed := false
for adapter := adapter; adapter != nil; adapter = adapter.Unwrap(metadata, false) {
if adapter.Type() == C.Pass {
passed = true
break
}
}
if passed {
log.Debugln("%s match Pass rule", adapter.Name())
continue
}