[Haskell-cafe] Waiting on input with `hWaitForInput' or `threadWaitRead'
Jason Dusek
jason.dusek at gmail.com
Tue Oct 18 18:59:12 CEST 2011
2011/10/18 Ertugrul Soeylemez <es at ertes.de>:
> A proxy server acts a lot like an echo server. The difference is that
> usually before the actual proxying starts you have a negotiation phase,
> and instead of echoing back to the same socket, you just write it to a
> different one. Here is an (untested) example:
>
> (clientH, clientHost, clientPort) <- accept serverSock
> destH <- negotiate clientH
> doneVar <- newEmptyMVar
>
> forkIO (hGetContents clientH >>= hPutStr destH >>= putMVar doneVar)
> forkIO (hGetContents destH >>= hPutStr clientH >>= putMVar doneVar)
> replicateM_ 2 (takeMVar doneVar)
> mapM_ hClose [clientH, destH]
This code seems like it says:
Allow the client to write to the server one time.
Allow the server to write to the client one time.
Teardown both sides of the connection.
Am I reading this correctly? This is, indeed, a proxy; but I'm
not sure it could support a wide range of protocols.
--
Jason Dusek
() ascii ribbon campaign - against html e-mail
/\ www.asciiribbon.org - against proprietary attachments
More information about the Haskell-Cafe
mailing list