34c6e0ea1a
I ran into several evilsplicer problems with the new lib versions, most notably including a problem with encoding of embedded binary files
63 lines
2.1 KiB
Diff
63 lines
2.1 KiB
Diff
From 087f1ae5e17f0e6d7c9f6b4092a5bb5bb6f5bf60 Mon Sep 17 00:00:00 2001
|
|
From: dummy <dummy@example.com>
|
|
Date: Thu, 16 Oct 2014 02:59:11 +0000
|
|
Subject: [PATCH] port
|
|
|
|
---
|
|
Network/DNS/Resolver.hs | 13 ++++++++-----
|
|
dns.cabal | 1 +
|
|
2 files changed, 9 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/Network/DNS/Resolver.hs b/Network/DNS/Resolver.hs
|
|
index 5721e03..c4400d1 100644
|
|
--- a/Network/DNS/Resolver.hs
|
|
+++ b/Network/DNS/Resolver.hs
|
|
@@ -19,7 +19,7 @@ module Network.DNS.Resolver (
|
|
) where
|
|
|
|
import Control.Applicative ((<$>), (<*>), pure)
|
|
-import Control.Exception (bracket)
|
|
+import Control.Exception (bracket, catch, IOException)
|
|
import qualified Data.ByteString.Char8 as BS
|
|
import Data.Char (isSpace)
|
|
import Data.List (isPrefixOf)
|
|
@@ -32,6 +32,7 @@ import Network.Socket (AddrInfoFlag(..), AddrInfo(..), defaultHints, getAddrInfo
|
|
import Prelude hiding (lookup)
|
|
import System.Random (getStdRandom, randomR)
|
|
import System.Timeout (timeout)
|
|
+import System.Process
|
|
|
|
#if mingw32_HOST_OS == 1
|
|
import Network.Socket (send)
|
|
@@ -130,10 +131,12 @@ makeResolvSeed conf = ResolvSeed <$> addr
|
|
where
|
|
addr = case resolvInfo conf of
|
|
RCHostName numhost -> makeAddrInfo numhost
|
|
- RCFilePath file -> toAddr <$> readFile file >>= makeAddrInfo
|
|
- toAddr cs = let l:_ = filter ("nameserver" `isPrefixOf`) $ lines cs
|
|
- in extract l
|
|
- extract = reverse . dropWhile isSpace . reverse . dropWhile isSpace . drop 11
|
|
+ RCFilePath file -> do
|
|
+ -- Android has no /etc/resolv.conf; use getprop command.
|
|
+ ls <- catch (lines <$> readProcess "getprop" ["net.dns1"] []) (const (return []) :: IOException -> IO [String])
|
|
+ makeAddrInfo $ case ls of
|
|
+ [] -> "8.8.8.8" -- google public dns as a fallback only
|
|
+ (l:_) -> l
|
|
|
|
makeAddrInfo :: HostName -> IO AddrInfo
|
|
makeAddrInfo addr = do
|
|
diff --git a/dns.cabal b/dns.cabal
|
|
index ceaf5f4..cd15e61 100644
|
|
--- a/dns.cabal
|
|
+++ b/dns.cabal
|
|
@@ -37,6 +37,7 @@ Library
|
|
, network >= 2.3
|
|
, random
|
|
, resourcet
|
|
+ , process
|
|
else
|
|
Build-Depends: base >= 4 && < 5
|
|
, attoparsec
|
|
--
|
|
2.1.1
|
|
|