in reply to HTTP::Daemon cannot support keep alive properly?

With the caveat that this is based on dim memory, I futzed around with HTTP::Daemon a few years back, and recall that getting Connection: keep-alive working took a combination of

  1. making sure that sockets were unbuffered, and
  2. generating an accurate Content-length: header.

But, unless you can fork, or otherwise multiplex I/O, you're liable to see strange browser behavior, since most browsers (or at least IE, since the early days) try to use two sockets at once to optimize page and image transfer. You also have to worry about the cause of a browser asking to keep a connection alive, and then, for whatever reason, not using it again.

I think what I ended up doing was to punt on http-alive, and fall back to HTTP 1.0 behavior. It was good enough for what I was doing at the time (which was putting a custom, low-bandwidth web server up on a machine that I didn't have administrative access to).