On Mon, Oct 21, 2013 at 7:28 PM, Joey Adams <joeyadams3.14159@gmail.com> wrote:
On Mon, Oct 21, 2013 at 5:15 PM, Corey O'Connor <coreyoconnor@gmail.com> wrote:
Curiously: If the Network.HTTP.close is removed the server does not fail, but some requests takes several seconds to process. I presume the ordering of effects is then correct, but without the explicit close the close occurs only a GC time.

The client may be trying to reuse the connection; see http://en.wikipedia.org/wiki/HTTP_persistent_connection.  This seems consistent with your results:

 * With the close call: connection is closed right after client sends a second request, so client whines.
 * Without the close call: client waits around for a response, then gives up and establishes another connection.

To confirm, add another receiveHTTP call client_interact and see if it returns another Request.

​Thanks!​ I'll try your test and see if anything changes.

Though I thought the code accounted for this: A connection close header is added to each response. Which I thought would cause the client to close the connection.​​ I could be totally wrong tho. There could be some additional aspect of HTTP connections I do not understand.

Properly supporting persistent connections should be pretty easy. There is another Network.HTTP server package that does this: http://hackage.haskell.org/package/http-server-1/docs/Network-HTTP-Server.html

So I'll give that a shot and report back.

Thanks!
Corey