[Bug 27033] New: XHR request termination doesn't terminate queued tasks

https://www.w3.org/Bugs/Public/show_bug.cgi?id=27033

            Bug ID: 27033
           Summary: XHR request termination doesn't terminate queued tasks
           Product: WebAppsWG
           Version: unspecified
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: XHR
          Assignee: annevk@annevk.nl
          Reporter: manishearth@gmail.com
        QA Contact: public-webapps-bugzilla@w3.org
                CC: mike@w3.org, public-webapps@w3.org

https://xhr.spec.whatwg.org/

When a request is terminated via `abort()` or the timeout, the fetch algorithm
is the only thing that is terminated[1]


However, there's no indication that we need to terminate existing queued up
tasks for the XHR object.

For example, the following can happen:

 - Initialiaze an XHR object, call send()
 - On readystatechange to 2 or 3, in the event handler, perform a long
computation
    - In the meantime, the fetch algorithm continues to fetch, and pushes
fetch-related events (eg "process response body"/"process response end of
file") to the DOM task queue.
 - abort() is called once the computation finishes. This aborts the fetch
algorithm, but does *not* remove already-queued events
 - After calling abort(), try to initialize and send a new request with the
same XHR object
 - The queued up tasks from the previous request will now be received by the
XHR object assuming they are for the new request, and we'll have some sort of
frankenresponse.

The w3 spec[2] explicitly mentions that tasks in the queue for the XHR object
should be aborted. I'm not certain if this includes the currently running task
-- if, for example, the user calls abort() followed by a new open() and send()
in the onprogress handler, should the onload/onloadend handlers be called for
the previous request? Probably not -- but this involves checking for an abort
on each step of the send(), which seems icky.

I guess the WHATWG spec needs to be updated to terminate more than just the
fetch algorithm.

 [1]: https://xhr.spec.whatwg.org/#terminate-the-request
 [2]: http://www.w3.org/TR/XMLHttpRequest2/#the-abort-method

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Received on Monday, 13 October 2014 16:57:26 UTC