- do installHandler sigPIPE Ignore Nothing
-
- case cnfSSLConfig cnf of
- Nothing
- -> return ()
- Just scnf
- -> do so <- listenOn (sslServerPort scnf)
- _loopTID <- forkIO $ httpsLoop (sslContext scnf) so
- return ()
-
- httpLoop =<< listenOn (cnfServerPort cnf)
+ do void $ installHandler sigPIPE Ignore Nothing
+ let launchers
+ = catMaybes
+ [ do scnf ← cnfSSLConfig cnf
+ addr ← cnfServerV4Addr cnf
+ return ( do so ← listenOn AF_INET addr (sslServerPort scnf)
+ launchListener (sslContext scnf, so)
+ )
+ , do scnf ← cnfSSLConfig cnf
+ addr ← cnfServerV6Addr cnf
+ return ( do so ← listenOn AF_INET6 addr (sslServerPort scnf)
+ launchListener (sslContext scnf, so)
+ )
+ , do addr ← cnfServerV4Addr cnf
+ return ( launchListener =≪ listenOn AF_INET addr (cnfServerPort cnf)
+ )
+ , do addr ← cnfServerV6Addr cnf
+ return ( launchListener =≪ listenOn AF_INET6 addr (cnfServerPort cnf)
+ )
+ ]
+ sequence_ launchers
+ waitForever