- case cnfSSLConfig cnf of
- Nothing
- -> return ()
- Just scnf
- -> do so <- listenOn (sslServerPort scnf)
- _loopTID <- forkIO $ httpsLoop (sslContext scnf) so
- return ()
-
- httpLoop =<< listenOn (cnfServerPort cnf)
+ 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