Commit 133cdd29 authored by Fabian Frank's avatar Fabian Frank Committed by Daniel Stenberg
Browse files

http2: rely on content-encoding header

A server might respond with a content-encoding header and a response
that was encoded accordingly in HTTP-draft-09/2.0 mode, even if the
client did not send an accept-encoding header earlier. The server might
not send a content-encoding header if the identity encoding was used to
encode the response.

See:
http://tools.ietf.org/html/draft-ietf-httpbis-http2-09#section-9.3
parent ff0547e7
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -3402,7 +3402,8 @@ CURLcode Curl_http_readwrite_headers(struct SessionHandle *data,


    }
    }
    else if(checkprefix("Content-Encoding:", k->p) &&
    else if(checkprefix("Content-Encoding:", k->p) &&
            data->set.str[STRING_ENCODING]) {
            (data->set.str[STRING_ENCODING] ||
             conn->httpversion == 20)) {
      /*
      /*
       * Process Content-Encoding. Look for the values: identity,
       * Process Content-Encoding. Look for the values: identity,
       * gzip, deflate, compress, x-gzip and x-compress. x-gzip and
       * gzip, deflate, compress, x-gzip and x-compress. x-gzip and
+1 −2
Original line number Original line Diff line number Diff line
@@ -410,7 +410,6 @@ CURLcode Curl_http2_request_upgrade(Curl_send_buffer *req,
  free(base64);
  free(base64);


  k->upgr101 = UPGR101_REQUESTED;
  k->upgr101 = UPGR101_REQUESTED;
  k->auto_decoding = GZIP;


  return result;
  return result;
}
}
@@ -641,7 +640,7 @@ int Curl_http2_switched(struct connectdata *conn)
  httpc->data = NULL;
  httpc->data = NULL;
  httpc->datalen = 0;
  httpc->datalen = 0;


  conn->data->req.auto_decoding = GZIP;
  conn->httpversion = 20;


  /* Put place holder for status line */
  /* Put place holder for status line */
  Curl_add_buffer(httpc->header_recvbuf, "HTTP/2.0 200\r\n", 14);
  Curl_add_buffer(httpc->header_recvbuf, "HTTP/2.0 200\r\n", 14);