X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FSocketLike.hs;h=b99811f3bba095f5fc6a586f7b5a00bb2750c23d;hp=f64e24bcad680f86d4ec3067f4f9d583558fcd68;hb=07b641d6c0a4ba07a07ede4d746dfb08a5ed0730;hpb=0214f070b80791323430e21b53bcbe8a77b71b23 diff --git a/Network/HTTP/Lucu/SocketLike.hs b/Network/HTTP/Lucu/SocketLike.hs index f64e24b..b99811f 100644 --- a/Network/HTTP/Lucu/SocketLike.hs +++ b/Network/HTTP/Lucu/SocketLike.hs @@ -11,21 +11,28 @@ import qualified System.IO as I class (HandleLike (Handle s)) => SocketLike s where type Handle s :: * - accept :: s -> IO (Handle s, So.SockAddr) + accept :: s -> IO (Handle s, So.SockAddr) + socketPort :: s -> IO So.PortNumber instance SocketLike So.Socket where type Handle So.Socket = I.Handle + accept soSelf = do (soPeer, addr) <- So.accept soSelf hPeer <- So.socketToHandle soPeer I.ReadWriteMode return (hPeer, addr) + socketPort = So.socketPort + instance SocketLike (SSL.SSLContext, So.Socket) where type Handle (SSL.SSLContext, So.Socket) = SSL.SSL + accept (ctx, soSelf) = do (soPeer, addr) <- So.accept soSelf ssl <- SSL.connection ctx soPeer SSL.accept ssl return (ssl, addr) + + socketPort = So.socketPort . snd \ No newline at end of file