X-Git-Url: http://www.average.org/gitweb/?p=pdns-pipe-nmc.git;a=blobdiff_plain;f=NmcDom.hs;h=61f7a19642a4199a25f9f6a708e501d7bf05bb09;hp=9edb79879f0e5cb3f469a27d95ee29ae5563106e;hb=ea693af2c9b9eb7713f5d409b969cbf22df26326;hpb=dd6073465d6c3cd83d93854de0635417cd95c065 diff --git a/NmcDom.hs b/NmcDom.hs index 9edb798..61f7a19 100644 --- a/NmcDom.hs +++ b/NmcDom.hs @@ -174,20 +174,19 @@ queryNmcDom queryOp key = do Just dom -> return $ Right dom -- | Try to fetch "import" object and merge it into the base domain --- In case of errors they are ignored, and nothing is merged. -- Original "import" element is removed, but new imports from the -- imported objects are processed recursively until there are none. mergeImport :: (String -> IO (Either String ByteString)) -- ^ query operation action -> NmcDom -- ^ base domain - -> IO NmcDom -- ^ result with merged import + -> IO (Either String NmcDom) -- ^ result with merged import mergeImport queryOp base = do let base' = base {domImport = Nothing} -- print base' case domImport base of - Nothing -> return base' + Nothing -> return $ Right base' Just key -> do sub <- queryNmcDom queryOp key case sub of - Left e -> return base' + Left e -> return $ Left e Right sub' -> mergeImport queryOp $ sub' `mergeNmcDom` base'