@@ -137,15 +137,23 @@ checkFile filePath = do
137137--------------------------------------------------------------------------------
138138checkUrl :: FilePath -> String -> Checker ()
139139checkUrl filePath url
140− | isExternal url = checkExternalUrl url
141− | "mailto:" `isPrefixOf` url = ok url
142− | otherwise = checkInternalUrl filePath url
143−
140+ | isExternal url = checkExternalUrl url
141+ | hasProtocol url = skip "Unknown protocol, skipping"
142+ | otherwise = checkInternalUrl filePath url
143+ where
144+ hasProtocol = all (`elem` validProtoChars) . takeWhile (/= ':')
145+ validProtoChars = ['A'..'Z'] ++ ['a'..'z'] ++ ['0'..'9'] ++ "+-."
144146
145147--------------------------------------------------------------------------------
146148ok :: String -> Checker ()
147149ok _ = tell $ mempty {checkerOk = 1}
148150
151+--------------------------------------------------------------------------------
152+skip :: String -> Checker ()
153+skip reason = do
154+ logger <- checkerLogger <$> ask
155+ Logger.debug logger $ reason
156+ tell $ mempty {checkerOk = 1}
149157
150158--------------------------------------------------------------------------------
151159faulty :: String -> Checker ()