It turns out that a large percentage of people who visited eser.org were getting error 500's.
I just now fixed this bug.
I had written my own single-process event-driven HTTP server using Linux epoll, and my code improperly handled a boundary case where the HTTP request header was split up amongst more than one read operation from the open socket.
Specifically, if the code did not see a \r\n\r\n within the first chunk of bytes it read from the socket, that specific client connection would hang and go unanswered. The front-end load balancer would see this and report an error 500 to the client, which is what people were seeing.
I should have tested this more thoroughly, but the whole thing is only a few days old since conception. Hopefully, I've got all of the major bugs out of it ;)
I just now fixed this bug.
I had written my own single-process event-driven HTTP server using Linux epoll, and my code improperly handled a boundary case where the HTTP request header was split up amongst more than one read operation from the open socket.
Specifically, if the code did not see a \r\n\r\n within the first chunk of bytes it read from the socket, that specific client connection would hang and go unanswered. The front-end load balancer would see this and report an error 500 to the client, which is what people were seeing.
I should have tested this more thoroughly, but the whole thing is only a few days old since conception. Hopefully, I've got all of the major bugs out of it ;)
eser.org