packages feed

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 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: --