@@ -11,9 +11,9 @@ import Control.Exception.Extensible as E
1111import Control.Concurrent (forkIO , killThread , myThreadId )
1212import Control.Monad
1313import qualified Data.Maybe as Maybe
14- import Network.BSD (getProtocolNumber )
1514import qualified Network.Socket as Socket
1615import System.IO.Error (isFullError )
16+ import Foreign.C (CInt )
1717{-
1818#ifndef mingw32_HOST_OS
1919-}
@@ -25,6 +25,12 @@ import System.Log.Logger (Priority(..), logM)
2525log' :: Priority -> String -> IO ()
2626log' = logM " Happstack.Server.HTTP.Listen"
2727
28+ -- Meant to be TCP in practise.
29+ -- See https://www.gnu.org/software/libc/manual/html_node/Creating-a-Socket.html
30+ -- which says "zero is usually right". It could theoretically be SCTP, but it
31+ -- would be a bizarre system that defaults to SCTP over TCP.
32+ proto :: CInt
33+ proto = Socket. defaultProtocol
2834
2935{-
3036 Network.listenOn binds randomly to IPv4 or IPv6 or both,
@@ -34,7 +40,6 @@ log' = logM "Happstack.Server.HTTP.Listen"
3440
3541listenOn :: Int -> IO Socket. Socket
3642listenOn portm = do
37- proto <- getProtocolNumber " tcp"
3843 E. bracketOnError
3944 (Socket. socket Socket. AF_INET Socket. Stream proto)
4045 (Socket. close)
@@ -49,7 +54,6 @@ listenOnIPv4 :: String -- ^ IP address to listen on (must be an IP address not
4954 -> Int -- ^ port number to listen on
5055 -> IO Socket. Socket
5156listenOnIPv4 ip portm = do
52- proto <- getProtocolNumber " tcp"
5357 hostAddr <- inet_addr ip
5458 E. bracketOnError
5559 (Socket. socket Socket. AF_INET Socket. Stream proto)
0 commit comments