@hackage splice0.2

Socket to Socket Data Splicing

A library that implements efficient socket to socket data transfer loops for proxy servers.

On Linux, it uses the zero-copy splice() system call: http://kerneltrap.org/node/6505.

On all other operating systems, it currently falls back to a portable Haskell implementation that allocates a constant-sized memory buffer before it enters an inner loop which then uses hGetBufSome and hPutBuf; this avoids lots of tiny allocations as would otherwise be caused by recv and sendAll functions from Network.Socket.ByteString.

This work is funded by Corsis Research and used in:

PortFusion ]-[ayabusa – German research project for building the simplest high-performance distributed reverse / forward proxy.

https://sourceforge.net/p/portfusion/wiki/RoadMap/