Lucu 0.3 → 0.3.1
raw patch · 3 files changed
+19/−17 lines, 3 filesdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
+ Network.HTTP.Lucu.Resource: getRemoteHost :: Resource String
Files
- Lucu.cabal +2/−2
- NEWS +7/−0
- Network/HTTP/Lucu/Resource.hs +10/−15
Lucu.cabal view
@@ -8,7 +8,7 @@ messing around FastCGI. It is also intended to be run behind a reverse-proxy so it doesn't have some facilities like logging, client filtering or such like.-Version: 0.3+Version: 0.3.1 License: PublicDomain License-File: COPYING Author: PHO <pho at cielonegro dot org>@@ -43,7 +43,7 @@ Library Build-Depends:- HsOpenSSL, base >= 4, bytestring, containers, dataenc,+ HsOpenSSL, base >= 4 && < 5, bytestring, containers, dataenc, directory, haskell-src, hxt, mtl, network, stm, time, unix, zlib Exposed-Modules:
NEWS view
@@ -1,3 +1,10 @@+Changes from 0.3 to 0.3.1+-------------------------+* Network.HTTP.Lucu.Resource:+ - Bugfix: getRemoteAddr' didn't work on little-endian architectures. (Thanks: Voker57)+ - Bugfix: getRemoteAddr' didn't work for IPv6 network.+ - New function: getRemoteHost+ Changes from 0.2.1 to 0.3 ------------------------- * Added SSL support:
Network/HTTP/Lucu/Resource.hs view
@@ -73,6 +73,7 @@ , getConfig , getRemoteAddr , getRemoteAddr'+ , getRemoteHost , getRemoteCertificate , getRequest , getMethod@@ -136,7 +137,6 @@ import Control.Concurrent.STM import Control.Monad.Reader-import Data.Bits import qualified Data.ByteString as Strict (ByteString) import qualified Data.ByteString.Lazy as Lazy (ByteString) import qualified Data.ByteString.Char8 as C8 hiding (ByteString)@@ -211,20 +211,15 @@ -- you want a 'Network.Socket.SockAddr' instead of 'Prelude.String', -- use 'getRemoteAddr'. getRemoteAddr' :: Resource String-getRemoteAddr' = do addr <- getRemoteAddr- case addr of- -- Network.Socket は IPv6 を考慮してゐないやうだ…- SockAddrInet _ v4addr- -> let b1 = (v4addr `shiftR` 24) .&. 0xFF- b2 = (v4addr `shiftR` 16) .&. 0xFF- b3 = (v4addr `shiftR` 8) .&. 0xFF- b4 = v4addr .&. 0xFF- in- return $ concat $ intersperse "." $ map show [b1, b2, b3, b4]- SockAddrUnix path- -> return path- _- -> undefined+getRemoteAddr' = do addr <- getRemoteAddr+ (Just str, _) <- liftIO $! getNameInfo [NI_NUMERICHOST] True False addr+ return str++-- |Resolve an address to the remote host.+getRemoteHost :: Resource String+getRemoteHost = do addr <- getRemoteAddr+ (Just str, _) <- liftIO $! getNameInfo [] True False addr+ return str -- | Return the X.509 certificate of the client, or 'Nothing' if: --