I've updated my Webduino web server library to version 1.3. This was prompted by a discussion over on arduino.cc where a user was having problems communicating with the server from his cell phone. I looked at the "read a new character from the network" logic and realized that a slow connection could let the Arduino think the client had finished its request when it really was just waiting on a new packet from the sender.
When I fixed that, I ran into a new issue. Modern HTTP clients will usually make a request in "keep-alive" mode. This means they don't close the socket when the finish asking the server for data, but instead keep it alive in case they want to send more requests. So, to determine where I was done reading POST data, I needed to look at the Content-Length header passed with the POST and kill the connection after reading that many bytes. Before, this wasn't a problem, as I'd just assume the connection was dropped when I didn't have any new data coming in from the client.
These fixes are in v1.3, along with some code you can turn on to debug your server's responses (it does slow things down a bit because the serial output code doesn't run in the background) and a fix for a possible security hole in parsing POST requests.
If you're into it, get the new code from http://webduino.googlecode.com.