packages feed

mighttpd2 2.8.1 → 2.8.2

raw patch · 2 files changed

+27/−4 lines, 2 files

Files

Mighty.hs view
@@ -14,7 +14,10 @@ import GHC.IO.Exception (IOErrorType(ResourceVanished)) import Log import Network+import Network.BSD import qualified Network.HTTP.Conduit as H+import Network.HTTP.Date+import Network.Socket import Network.Wai.Application.Classic hiding ((</>), (+++)) import Network.Wai.Handler.Warp import Network.Wai.Logger@@ -25,6 +28,7 @@ import Route import Signal import State+import System.Date.Cache import System.Directory import System.Environment import System.Exit@@ -34,8 +38,6 @@ import System.Posix import Types import Utils-import System.Date.Cache-import Network.HTTP.Date  ---------------------------------------------------------------- @@ -109,7 +111,7 @@   where     debug = opt_debug_mode opt     port = opt_port opt-    sOpen = listenOn (PortNumber . fromIntegral $ port)+    sOpen = listenSocket (show port)     pidfile = opt_pid_file opt     workers = opt_worker_processes opt     writePidFile = do@@ -356,3 +358,24 @@         void $ forkProcess p         exitSuccess     detachTerminal = void createSession++listenSocket :: String -> IO Socket+listenSocket serv = do+    proto <- getProtocolNumber "tcp"+    let hints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_PASSIVE]+                             , addrSocketType = Stream+                             , addrProtocol = proto }+    addrs <- getAddrInfo (Just hints) Nothing (Just serv)+    let addrs' = filter (\x -> addrFamily x == AF_INET6) addrs+        addr = if null addrs' then head addrs else head addrs'+    listenSocket' addr++listenSocket' :: AddrInfo -> IO Socket+listenSocket' addr = bracketOnError setup cleanup $ \sock -> do+    setSocketOption sock ReuseAddr 1+    bindSocket sock (addrAddress addr)+    listen sock 2048+    return sock+ where+   setup = socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)+   cleanup = sClose
mighttpd2.cabal view
@@ -1,5 +1,5 @@ Name:                   mighttpd2-Version:                2.8.1+Version:                2.8.2 Author:                 Kazu Yamamoto <kazu@iij.ad.jp> Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp> License:                BSD3