Redirect delegate call sequence fix #301

Open
wants to merge 1 commit into
from

2 participants

@yllan

Currently, the requestRedirected delegate method will be called right after the header is parsed. However, the data received delegate method which comes together with the redirected header will be called after the requestRedirected callback.

The sequence is like this:

  1. HTTP Redirect Header
  2. requestRedirected
  3. HTTP Redirect Body (usually some simple html indicate the redirection)
  4. dataReceived
  5. HTTP Header
  6. headerReceived
  7. HTTP Body
  8. dataReceived

I think in this sequence, step 4 may cause bugs. The delegate is most likely accumulating the received data for writing to file, live parsing, etc. Apparently, we should not append the data received from step 4 to step 8. The most straight forward thought is to "reset" the data status after the request being redirected but that actually happens before step 4.

I propose to move the step 2 between step 4 and 5.

@yllan yllan referenced this pull request Jan 19, 2012
Closed

Redirect fix #300

@johnz45

There is actually a check in handleBytesReceived that returns before calling the dataReceived delegate if there is a redirect happening. This redirect flag is set at step 1 during response header reading and reset after step 4. Hence, it should be fine in this case.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment