diff --git a/snap-server.cabal b/snap-server.cabal
--- a/snap-server.cabal
+++ b/snap-server.cabal
@@ -1,5 +1,5 @@
 name:           snap-server
-version:        1.0.2.2
+version:        1.0.3.0
 synopsis:       A web server for the Snap Framework
 description:
   Snap is a simple and fast web development framework and server written in
@@ -19,7 +19,9 @@
 cabal-version:  >= 1.10
 homepage:       http://snapframework.com/
 category:       Web, Snap, IO-Streams
+tested-with: GHC==8.2.1, GHC==8.0.2, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
 
+
 extra-source-files:
   CONTRIBUTORS,
   LICENSE,
@@ -31,6 +33,13 @@
   test/key.pem,
   testserver/static/hello.txt
 
+tested-with:
+  GHC==7.4.2
+  GHC==7.6.3,
+  GHC==7.8.4,
+  GHC==7.10.3,
+  GHC==8.0.2,
+  GHC==8.2.1
 
 Flag portable
   Description: Compile in cross-platform mode. No platform-specific code or
@@ -137,10 +146,7 @@
       System.SendFile.Linux
 
   if os(darwin) && !flag(portable)
-    cpp-options: -DOSX -DHAS_SENDFILE -DHAS_UNIX_SOCKETS
-    other-modules:
-      System.SendFile,
-      System.SendFile.Darwin
+    cpp-options: -DOSX -DHAS_UNIX_SOCKETS
 
   if os(freebsd) && !flag(portable)
     cpp-options: -DFREEBSD -DHAS_SENDFILE -DHAS_UNIX_SOCKETS
@@ -214,7 +220,7 @@
     snap-core                           >= 1.0      && < 1.1,
     text                                >= 0.11     && < 1.3,
     threads                             >= 0.5      && < 0.6,
-    time                                >= 1.0      && < 1.7,
+    time                                >= 1.0      && < 1.9,
     transformers                        >= 0.3      && < 0.6,
     unix-compat                         >= 0.2      && < 0.5,
     vector                              >= 0.7      && < 0.13,
@@ -304,7 +310,7 @@
     blaze-builder                       >= 0.4     && < 0.5,
     bytestring                          >= 0.9     && < 0.11,
     bytestring-builder                  >= 0.10.4  && < 0.11,
-    criterion                           >= 0.6     && < 1.2,
+    criterion                           >= 0.6     && < 1.3,
     io-streams,
     io-streams-haproxy                  >= 1.0     && < 1.1,
     snap-core                           >= 1.0     && < 1.1,
@@ -396,7 +402,7 @@
     old-locale                          >= 1.0      && < 1.1,
     snap-core                           >= 1.0      && < 1.1,
     text                                >= 0.11     && < 1.3,
-    time                                >= 1.0      && < 1.7,
+    time                                >= 1.0      && < 1.9,
     unix-compat                         >= 0.2      && < 0.5,
     vector                              >= 0.7      && < 0.13
 
@@ -488,7 +494,7 @@
     old-locale                          >= 1.0      && < 1.1,
     snap-core                           >= 1.0      && < 1.1,
     text                                >= 0.11     && < 1.3,
-    time                                >= 1.0      && < 1.7,
+    time                                >= 1.0      && < 1.9,
     transformers                        >= 0.3      && < 0.6,
     unix-compat                         >= 0.2      && < 0.5,
     vector                              >= 0.7      && < 0.13
diff --git a/src/Snap/Http/Server.hs b/src/Snap/Http/Server.hs
--- a/src/Snap/Http/Server.hs
+++ b/src/Snap/Http/Server.hs
@@ -35,7 +35,7 @@
 import qualified Data.Text.Encoding                as T
 import           Data.Version                      (showVersion)
 import           Data.Word                         (Word64)
-import           Network.Socket                    (Socket, sClose)
+import           Network.Socket                    (Socket, close)
 import           Prelude                           (Bool (..), Eq (..), IO, Maybe (..), Monad (..), Show (..), String, const, flip, fst, id, mapM, mapM_, maybe, snd, unzip3, zip, ($), ($!), (++), (.))
 import           System.IO                         (hFlush, hPutStrLn, stderr)
 #ifndef PORTABLE
@@ -105,7 +105,7 @@
 
     go conf sockets afuncs `finally` (mask_ $ do
         output "\nShutting down.."
-        mapM_ (eatException . sClose) sockets)
+        mapM_ (eatException . close) sockets)
 
   where
     eatException :: IO a -> IO ()
diff --git a/src/Snap/Internal/Http/Server/Config.hs b/src/Snap/Internal/Http/Server/Config.hs
--- a/src/Snap/Internal/Http/Server/Config.hs
+++ b/src/Snap/Internal/Http/Server/Config.hs
@@ -560,7 +560,8 @@
                           , isJust . getSSLCert ]
 
     sslValid   = and sslVals
-    noPort = isNothing (getPort cfg) && not sslValid
+    unixValid  = isJust $ unixsocket cfg
+    noPort = isNothing (getPort cfg) && not sslValid && not unixValid
 
     cfg' = emptyConfig { port = if noPort then Just 8000 else Nothing }
 
diff --git a/src/Snap/Internal/Http/Server/Session.hs b/src/Snap/Internal/Http/Server/Session.hs
--- a/src/Snap/Internal/Http/Server/Session.hs
+++ b/src/Snap/Internal/Http/Server/Session.hs
@@ -509,7 +509,7 @@
     --------------------------------------------------------------------------
     {-# INLINE runServerHandler #-}
     runServerHandler !hookState !req = {-# SCC "httpSession/runServerHandler" #-} do
-        (_, rsp0) <- serverHandler config sessionData req
+        (req0, rsp0) <- serverHandler config sessionData req
         userHandlerFinishedHook hookState req rsp0
 
         -- check whether we should close the connection after sending the
@@ -533,7 +533,7 @@
         bytesSent <- sendResponse req rsp `E.catch`
                      catchUserException hookState "sending-response" req
         dataFinishedHook hookState req rsp
-        logAccess req rsp bytesSent
+        logAccess req0 rsp bytesSent
         return $! not cc'
 
     --------------------------------------------------------------------------
diff --git a/src/Snap/Internal/Http/Server/TLS.hs b/src/Snap/Internal/Http/Server/TLS.hs
--- a/src/Snap/Internal/Http/Server/TLS.hs
+++ b/src/Snap/Internal/Http/Server/TLS.hs
@@ -18,7 +18,7 @@
 import           Data.Typeable                     (Typeable)
 import           Network.Socket                    (Socket)
 #ifdef OPENSSL
-import           Control.Exception                 (Exception, bracketOnError, finally, throwIO)
+import           Control.Exception                 (Exception, bracketOnError, finally, onException, throwIO)
 import           Control.Monad                     (when)
 import           Data.ByteString.Builder           (byteString)
 import qualified Network.Socket                    as Socket
@@ -135,7 +135,8 @@
         (remotePort, remoteHost) <- getAddress remoteAddr
         ssl                      <- restore (SSL.connection ctx sock)
 
-        restore (SSL.accept ssl)
+        restore (SSL.accept ssl) `onException` Socket.close sock
+
         (readEnd, writeEnd) <- SStreams.sslToStreams ssl
 
         let cleanup = (do Streams.write Nothing writeEnd
