úÎ$p ™C      !"#$%&'()*+,-./0123456789:;<=>?@ABNone%  !"CD#  !"#   !"   !"CDNone#$%&'(#$%&'(#$%&'(#$%&'(None3;currently if you consume the entire request body this will  terminate and return the ret$ value that you supplied. But, that A seems wrong, because that will tear down the whole pipeline and @ return that value instead of what you really wanted to return. Perhaps this should return a 'Maybe ByteString' instead so you can : detect when the body ends? But that interfers with using  2 in httpPipe. For now we will just return E " forever when you get to the end. CPerhaps pipes 2.5 will provide a better solution as it is supposed 9 to allow you to catch termination of the upstream pipe. :find a line terminated by a '\r\n' )*+,-./012is this an HTTPS connection? 3456789:F)*+,-./0123456789:.10/)-,+*23456789:)-,+*./0123456789:FNone;start TCP listening on a port <Stream data from the socket. FIXME: what should happen if G raises an exception? =Stream data to the socket. FIXME: what should happen if H raises an exception? ; port number <I to read data from =I to write data to ;<=;<=;<=None>a > essentially a  and returns a  *The Pipe allows use to incrementally read J chuncks from * the Request body and incrementally write J chunks in the   body. ?listen on a port and handle Requests A@this is where we construct the pipe that reads from the socket, / processes the request, and sends the response B%and this is the real heart of things >?port number to listen on handler @socket to listen on handler Ais this an HTTPS connection ip of the client #Server to read data (Request) from #Client to write data (Response) to handler Bis this an HTTPS connection >?@AB>?@AB>?@ABK      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMKLNKOPGQRShyperdrive-0.1TypesResponseRequestNetworkServersCode rsHeadersrsBodyrqMethodrqURIbs rqHTTPVersion rqHeadersrqSecurerqClient MessageBodyMethod EXTENSIONCONNECTTRACEDELETEPUTPOSTHEADGETONLYGETOPTIONS HTTPVersionHTTP11HTTP10 ppHTTPVersionppMethod ppRequestppHeader ppResponse bytestringfieldresponseWriter statusLine ok_statusnot_found_status renderHeaders renderHeader ParseErrorUnknownHTTPVersionMalformedHeaderMalformedRequestLine Unexpectedcoloncrnlspace parseRequestpipeBodyparseRequestLine parseMethodparseHTTPVersion parseHeaders parseHeader parseTokentakeLinelistenOn socketReader socketWriterHandlerserve serveSocket requestLoophttpPipe$fShowResponse $fShowRequestbytestring-0.10.0.0Data.ByteStringempty$fExceptionParseErrornetwork-2.4.0.1Network.Socket.ByteStringrecvsendAllNetwork.SocketSocketData.ByteString.Internal ByteString