+ do _ <- installHandler sigPIPE Ignore Nothing
+
+ -- FIXME: TERRIBLE CODE. NEED MAJOR REWRITE.
+ case cnfSSLConfig cnf of
+ Nothing
+ -> return ()
+ Just scnf
+ -> do case cnfServerV4Addr cnf of
+ Nothing
+ -> return ()
+ Just v4addr
+ -> do so <- listenOn AF_INET v4addr (sslServerPort scnf)
+ p <- socketPort so
+ -- FIXME: Don't throw away the thread
+ -- ID as we can't kill it later
+ -- then. [1]
+ _ <- forkIO $ httpLoop p (sslContext scnf, so)
+ return ()
+
+ case cnfServerV6Addr cnf of
+ Nothing
+ -> return ()
+ Just v6addr
+ -> do so <- listenOn AF_INET6 v6addr (sslServerPort scnf)
+ p <- socketPort so
+ -- FIXME: [1]
+ _ <- forkIO $ httpLoop p (sslContext scnf, so)
+ return ()
+
+ case cnfServerV4Addr cnf of
+ Nothing
+ -> return ()
+ Just v4addr
+ -> do so <- listenOn AF_INET v4addr (cnfServerPort cnf)
+ p <- socketPort so
+ -- FIXME: [1]
+ _ <- forkIO $ httpLoop p so
+ return ()
+
+ case cnfServerV6Addr cnf of
+ Nothing
+ -> return ()
+ Just v6addr
+ -> do so <- listenOn AF_INET6 v6addr (cnfServerPort cnf)
+ p <- socketPort so
+ -- FIXME: [1]
+ _ <- forkIO $ httpLoop p so
+ return ()
+
+ waitForever