#722: Handling bad POST retries from IE6/IE7
---------------------------+------------------------------------------------
Reporter: dowski | Owner: dowski
Type: enhancement | Status: new
Priority: normal | Milestone: 3.0
Component: CherryPy code | Keywords:
---------------------------+------------------------------------------------
See [
http://support.microsoft.com/kb/831167 this KB article] for the MS
version of the story.
In a nutshell, if the connection is reset when IE is in the middle of a
POST, it will retry the POST without confirmation, but '''without the
message body.''' This causes the CP WSGI server to hand the request off
to the CP WSGI application, which times out while trying to read the non-
existent POST body.
Here is a diagram of the flow/state of the conversation:
{{{
Client CherryPy Server
sends POST req ---> <--- Socket idle timeout (default 10 secs)
(FIN)
receives FIN <---
sends ACK --->
---> Receives ACK, socket to FIN_WAIT_2
---> Receives POST from above on closed socket
<--- sends RST
Receives RST <---
(socket is closed)
resends POST
*headers only* --->
---> Receives POST headers
FieldStorage object times
out attempting to read
non-existant message body
<--- Sends 500 response
}}}
--
Ticket URL: <
http://cherrypy.org/ticket/722>
CherryPy <
http://www.cherrypy.org>
CherryPy - a pythonic, object-oriented HTTP framework