@@ -198,12 +198,14 @@ checkExternalUrl url = do
198198 else do
199199 isOk <- liftIO $ handle (failure logger) $
200200 Http.withManager $ \mgr -> do
201− request <- Http.parseUrl url
201+ request <- Http.parseUrl $ urlToCheck url
202202 response <- Http.http (settings request) mgr
203203 let code = Http.statusCode (Http.responseStatus response)
204204 return $ code >= 200 && code < 300
205205
206− modify $ S.insert url
206+ modify $ if schemeRelative url
207+ then S.insert (urlToCheck url) . S.insert url
208+ else S.insert url
207209 if isOk then ok url else faulty url
208210 where
209211 -- Add additional request info
@@ -221,6 +223,10 @@ checkExternalUrl url = do
221223 failure logger (SomeException e) = case cast e of
222224 Just UserInterrupt -> throw UserInterrupt
223225 _ -> Logger.error logger (show e) >> return False
226+
227+ -- Check scheme-relative links
228+ schemeRelative = isPrefixOf "//"
229+ urlToCheck uri = if schemeRelative uri then "http:" ++ uri else uri
224230#else
225231checkExternalUrl _ = return ()
226232#endif