From c83edf6d78906e508b04e53601d238cc7c8cdbfa Mon Sep 17 00:00:00 2001 From: Anne van Kesteren Date: Wed, 15 Jul 2015 11:53:00 +0200 Subject: [PATCH] Fix various cases that should have talked about the internal response, but didn't. Fixes #23 again (and better this time). --- Overview.html | 73 ++++++++++++++++++++++++++--------------------- Overview.src.html | 73 ++++++++++++++++++++++++++--------------------- 2 files changed, 80 insertions(+), 66 deletions(-) diff --git a/Overview.html b/Overview.html index 86460fb1c..3fb7f1a38 100644 --- a/Overview.html +++ b/Overview.html @@ -1599,20 +1599,6 @@

5.1 Main fetch

  • If main fetch is invoked recursively, return response. -

  • Set response's - url list to a copy of - request's url list. - -

  • If - should response to request be blocked as mixed content, - should response to request be blocked as content security, - or - should response to request be blocked due to nosniff - returns blocked, set response to a - network error. - [MIX] - [CSP] -

  • If response is not a network error and @@ -1634,25 +1620,39 @@

    5.1 Main fetch

    opaque filtered response +
  • Let internalResponse be response's + internal response. + +

  • Set internalResponse's + url list to a copy of + request's url list. + +

  • If + should internalResponse to request be blocked as mixed content, + should internalResponse to request be blocked as content security, + or + should internalResponse to request be blocked due to nosniff + returns blocked, set response to a + network error. + [MIX] + [CSP] +

  • If request's method is `HEAD` or `CONNECT`, or - response's - internal response's + internalResponse's status is 101, 204, 205, or 304, set - response's - internal response's - body to null and disregard any pushing toward - it (if any). + internalResponse's body to + null and disregard any pushing toward it (if any).

    This standardizes the error handling for servers that violate HTTP.

  • If request's synchronous flag is set, wait for either end-of-file to have been pushed to - response's body or for - response to have a + internalResponse's body or for + internalResponse to have a termination reason, and then return response. @@ -1670,7 +1670,7 @@

    5.1 Main fetch

    process response for response.
  • -

    If response's +

    If internalResponse's body is null, run these substeps:

      @@ -1682,22 +1682,22 @@

      5.1 Main fetch

  • -

    Otherwise, if response's +

    Otherwise, if internalResponse's body is non-null, run these substeps:

      -
    1. Whenever response's +

    2. Whenever internalResponse's body's is pushed to, for and as long as - response has no + internalResponse has no termination reason and end-of-file has not been pushed, queue a fetch task on request to process response body for response.

    3. -

      Once end-of-file has been pushed to response's - body or response has a - termination reason, +

      Once end-of-file has been pushed to internalResponse's + body or internalResponse has + a termination reason, queue a fetch-done task using request and response. @@ -1973,9 +1973,15 @@

      5.3 HTTP fetch

      response from a service worker.
    +
  • Let status be response's + status, if response is not a + filtered response, and + response's + internal response's + status otherwise. +
  • -

    Then, switch on response's - status: +

    Switch on status:

    304 @@ -2163,8 +2169,9 @@

    5.3 HTTP fetch

    [HTTPAUTH]
  • Return response. Typically - response's body is still being - pushed to after returning. + response's body (or that of the + internal response) is still being pushed to + after returning. diff --git a/Overview.src.html b/Overview.src.html index 8c650c5bf..e11bc5bed 100644 --- a/Overview.src.html +++ b/Overview.src.html @@ -1546,20 +1546,6 @@

    Main fetch

  • If main fetch is invoked recursively, return response. -

  • Set response's - url list to a copy of - request's url list. - -

  • If - should response to request be blocked as mixed content, - should response to request be blocked as content security, - or - should response to request be blocked due to nosniff - returns blocked, set response to a - network error. - MIX - CSP -

  • If response is not a network error and @@ -1581,25 +1567,39 @@

    Main fetch

    opaque filtered response
  • +
  • Let internalResponse be response's + internal response. + +

  • Set internalResponse's + url list to a copy of + request's url list. + +

  • If + should internalResponse to request be blocked as mixed content, + should internalResponse to request be blocked as content security, + or + should internalResponse to request be blocked due to nosniff + returns blocked, set response to a + network error. + MIX + CSP +

  • If request's method is `HEAD` or `CONNECT`, or - response's - internal response's + internalResponse's status is 101, 204, 205, or 304, set - response's - internal response's - body to null and disregard any pushing toward - it (if any). + internalResponse's body to + null and disregard any pushing toward it (if any).

    This standardizes the error handling for servers that violate HTTP.

  • If request's synchronous flag is set, wait for either end-of-file to have been pushed to - response's body or for - response to have a + internalResponse's body or for + internalResponse to have a termination reason, and then return response. @@ -1617,7 +1617,7 @@

    Main fetch

    process response for response.
  • -

    If response's +

    If internalResponse's body is null, run these substeps:

      @@ -1629,22 +1629,22 @@

      Main fetch

  • -

    Otherwise, if response's +

    Otherwise, if internalResponse's body is non-null, run these substeps:

      -
    1. Whenever response's +

    2. Whenever internalResponse's body's is pushed to, for and as long as - response has no + internalResponse has no termination reason and end-of-file has not been pushed, queue a fetch task on request to process response body for response.

    3. -

      Once end-of-file has been pushed to response's - body or response has a - termination reason, +

      Once end-of-file has been pushed to internalResponse's + body or internalResponse has + a termination reason, queue a fetch-done task using request and response. @@ -1920,9 +1920,15 @@

      HTTP fetch

      response from a service worker.
    +
  • Let status be response's + status, if response is not a + filtered response, and + response's + internal response's + status otherwise. +
  • -

    Then, switch on response's - status: +

    Switch on status:

    304 @@ -2110,8 +2116,9 @@

    HTTP fetch

    HTTPAUTH
  • Return response. Typically - response's body is still being - pushed to after returning. + response's body (or that of the + internal response) is still being pushed to + after returning.