You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Greg Stein <gs...@gmail.com> on 2013/06/25 20:33:52 UTC

Re: svn commit: r1496470 - in /subversion/trunk/subversion: include/svn_config.h libsvn_ra_serf/ra_serf.h libsvn_ra_serf/serf.c libsvn_ra_serf/util.c libsvn_subr/config_file.c

We talked about a •dynamic* test, so that a (laptop) connecting
through different proxies could choose whether to use C-L.

On Tue, Jun 25, 2013 at 9:36 AM,  <iv...@apache.org> wrote:
> Author: ivan
> Date: Tue Jun 25 13:36:48 2013
> New Revision: 1496470
>
> URL: http://svn.apache.org/r1496470
> Log:
> Add new 'http-chunked-requests' configuration option to control using
> of chunked transfer encoding for HTTP/1.1 servers.
>
> * subversion/include/svn_config.h
>   (SVN_CONFIG_OPTION_HTTP_CHUNKED_REQUESTS): New.
>
> * subversion/libsvn_ra_serf/ra_serf.h
>   (svn_ra_serf__session_t): Add USING_CHUNKED_REQUESTS flag.
>
> * subversion/libsvn_ra_serf/serf.c
>   (load_config): Parse 'http-chunked-requests' configuration option.
>
> * subversion/libsvn_ra_serf/util.c
>   (setup_serf_req): Set Content-Length if USING_CHUNKED_REQUESTS is zero.
>
> * subversion/libsvn_subr/config_file.c
>   (svn_config_ensure): Mention 'http-chunked-requests' in 'servers' file
>    template.
>
> Modified:
>     subversion/trunk/subversion/include/svn_config.h
>     subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h
>     subversion/trunk/subversion/libsvn_ra_serf/serf.c
>     subversion/trunk/subversion/libsvn_ra_serf/util.c
>     subversion/trunk/subversion/libsvn_subr/config_file.c
>
> Modified: subversion/trunk/subversion/include/svn_config.h
> URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_config.h?rev=1496470&r1=1496469&r2=1496470&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/include/svn_config.h (original)
> +++ subversion/trunk/subversion/include/svn_config.h Tue Jun 25 13:36:48 2013
> @@ -95,6 +95,8 @@ typedef struct svn_config_t svn_config_t
>  #define SVN_CONFIG_OPTION_HTTP_BULK_UPDATES         "http-bulk-updates"
>  /** @since New in 1.8. */
>  #define SVN_CONFIG_OPTION_HTTP_MAX_CONNECTIONS      "http-max-connections"
> +/** @since New in 1.9. */
> +#define SVN_CONFIG_OPTION_HTTP_CHUNKED_REQUESTS     "http-chunked-requests"
>
>  #define SVN_CONFIG_CATEGORY_CONFIG          "config"
>  #define SVN_CONFIG_SECTION_AUTH                 "auth"
>
> Modified: subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h
> URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h?rev=1496470&r1=1496469&r2=1496470&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h (original)
> +++ subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h Tue Jun 25 13:36:48 2013
> @@ -144,6 +144,9 @@ struct svn_ra_serf__session_t {
>       HTTP/1.0. Thus, we cannot send chunked requests.  */
>    svn_boolean_t http10;
>
> +  /* Should we use Transfer-Encoding: chunked for HTTP/1.1 servers. */
> +  svn_boolean_t using_chunked_requests;
> +
>    /* Our Version-Controlled-Configuration; may be NULL until we know it. */
>    const char *vcc_url;
>
>
> Modified: subversion/trunk/subversion/libsvn_ra_serf/serf.c
> URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/serf.c?rev=1496470&r1=1496469&r2=1496470&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_ra_serf/serf.c (original)
> +++ subversion/trunk/subversion/libsvn_ra_serf/serf.c Tue Jun 25 13:36:48 2013
> @@ -225,6 +225,11 @@ load_config(svn_ra_serf__session_t *sess
>                                 SVN_CONFIG_OPTION_HTTP_MAX_CONNECTIONS,
>                                 SVN_CONFIG_DEFAULT_OPTION_HTTP_MAX_CONNECTIONS));
>
> +  SVN_ERR(svn_config_get_bool(config, &session->using_chunked_requests,
> +                              SVN_CONFIG_SECTION_GLOBAL,
> +                              SVN_CONFIG_OPTION_HTTP_CHUNKED_REQUESTS,
> +                              TRUE));
> +
>    if (config)
>      server_group = svn_config_find_group(config,
>                                           session->session_url.hostname,
> @@ -281,6 +286,12 @@ load_config(svn_ra_serf__session_t *sess
>                                     server_group,
>                                     SVN_CONFIG_OPTION_HTTP_MAX_CONNECTIONS,
>                                     session->max_connections));
> +
> +      SVN_ERR(svn_config_get_bool(
> +               config, &session->using_chunked_requests,
> +               server_group,
> +               SVN_CONFIG_OPTION_HTTP_CHUNKED_REQUESTS,
> +               session->using_chunked_requests));
>      }
>
>    /* Don't allow the http-max-connections value to be larger than our
>
> Modified: subversion/trunk/subversion/libsvn_ra_serf/util.c
> URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/util.c?rev=1496470&r1=1496469&r2=1496470&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_ra_serf/util.c (original)
> +++ subversion/trunk/subversion/libsvn_ra_serf/util.c Tue Jun 25 13:36:48 2013
> @@ -641,8 +641,9 @@ setup_serf_req(serf_request_t *request,
>    serf_bucket_alloc_t *allocator = serf_request_get_alloc(request);
>
>    svn_spillbuf_t *buf;
> +  svn_boolean_t set_CL = session->http10 || !session->using_chunked_requests;
>
> -  if (session->http10 && body_bkt != NULL)
> +  if (set_CL && body_bkt != NULL)
>      {
>        /* Ugh. Use HTTP/1.0 to talk to the server because we don't know if
>           it speaks HTTP/1.1 (and thus, chunked requests), or because the
> @@ -670,7 +671,7 @@ setup_serf_req(serf_request_t *request,
>
>    /* Set the Content-Length value. This will also trigger an HTTP/1.0
>       request (rather than the default chunked request).  */
> -  if (session->http10)
> +  if (set_CL)
>      {
>        if (body_bkt == NULL)
>          serf_bucket_request_set_CL(*req_bkt, 0);
>
> Modified: subversion/trunk/subversion/libsvn_subr/config_file.c
> URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/config_file.c?rev=1496470&r1=1496469&r2=1496470&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_subr/config_file.c (original)
> +++ subversion/trunk/subversion/libsvn_subr/config_file.c Tue Jun 25 13:36:48 2013
> @@ -810,6 +810,8 @@ svn_config_ensure(const char *config_dir
>          "###   http-max-connections       Maximum number of parallel server" NL
>          "###                              connections to use for any given"  NL
>          "###                              HTTP operation."                   NL
> +        "###   http-chunked-requests      Whether to use chunked transfer"   NL
> +        "###                              encoding for HTTP requests body."  NL
>          "###   neon-debug-mask            Debug mask for Neon HTTP library"  NL
>          "###   ssl-authority-files        List of files, each of a trusted CA"
>                                                                               NL
>
>