diff --git a/src/Handler/Health/Interface.hs b/src/Handler/Health/Interface.hs index 3e96511d5..ba21cf14f 100644 --- a/src/Handler/Health/Interface.hs +++ b/src/Handler/Health/Interface.hs @@ -115,7 +115,16 @@ mkInterfaceLogTable flagError interfs@(reqIfs, banIfs) = do EL.on ( ilog E.^. InterfaceLogInterface E.=?. ihealth E.?. InterfaceHealthInterface E.&&. ilog E.^. InterfaceLogSubtype E.=~. E.joinV (ihealth E.?. InterfaceHealthSubtype) E.&&. ilog E.^. InterfaceLogWrite E.=~. E.joinV (ihealth E.?. InterfaceHealthWrite ) - ) + E.&&. E.notExists (do -- a more specific match does not exist + otherh <- E.from $ E.table @InterfaceHealth + E.where_ $ otherh E.^. InterfaceHealthInterface E.=?. ihealth E.?. InterfaceHealthInterface + E.&&. E.just (otherh E.^. InterfaceHealthHours) E.!=. ihealth E.?. InterfaceHealthHours + E.&&. ( (otherh E.^. InterfaceHealthSubtype E.?=. ilog E.^. InterfaceLogSubtype) E.&&. E.isNothing (E.joinV $ ihealth E.?. InterfaceHealthSubtype) + E.||. otherh E.^. InterfaceHealthSubtype E.=?. ihealth E.?. InterfaceHealthSubtype) + E.&&. ( (otherh E.^. InterfaceHealthWrite E.?=. ilog E.^. InterfaceLogWrite ) E.&&. E.isNothing (E.joinV $ ihealth E.?. InterfaceHealthWrite ) + E.||. otherh E.^. InterfaceHealthWrite E.=?. ihealth E.?. InterfaceHealthWrite ) + ) + ) let matchUIH crits = E.or [ E.and $ catMaybes [ ilog E.^. InterfaceLogInterface E.==. E.val (sanitize ifce) & Just