You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by iv...@apache.org on 2012/11/09 14:50:07 UTC
svn commit: r1407454 - in /subversion/trunk/subversion/libsvn_ra_serf:
property.c ra_serf.h update.c util.c
Author: ivan
Date: Fri Nov 9 13:50:06 2012
New Revision: 1407454
URL: http://svn.apache.org/viewvc?rev=1407454&view=rev
Log:
ra_serf: Accept gzip compression for all responses.
* subversion/libsvn_ra_serf/ra_serf.h
(svn_ra_serf__handler_t): Add custom_accept_encoding field.
* subversion/libsvn_ra_serf/util.c
(setup_serf_req): Setup Accept-Encoding if provided.
(setup_request): Accept gzip compression if enabled and caller does not
want set custom accept encoding.
* subversion/libsvn_ra_serf/property.c
(setup_propfind_headers): Do not setup Accept-Encoding request header.
* subversion/libsvn_ra_serf/update.c
(fetch_file, svn_ra_serf__get_file): Disable automatic accept encoding
setup.
(headers_report): Remove.
(finish_report): Do not use header_delegate to configure accept encoding.
Modified:
subversion/trunk/subversion/libsvn_ra_serf/property.c
subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h
subversion/trunk/subversion/libsvn_ra_serf/update.c
subversion/trunk/subversion/libsvn_ra_serf/util.c
Modified: subversion/trunk/subversion/libsvn_ra_serf/property.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/property.c?rev=1407454&r1=1407453&r2=1407454&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/property.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/property.c Fri Nov 9 13:50:06 2012
@@ -468,10 +468,6 @@ setup_propfind_headers(serf_bucket_t *he
{
propfind_context_t *ctx = setup_baton;
- if (ctx->sess->using_compression)
- {
- serf_bucket_headers_setn(headers, "Accept-Encoding", "gzip");
- }
serf_bucket_headers_setn(headers, "Depth", ctx->depth);
if (ctx->label)
{
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=1407454&r1=1407453&r2=1407454&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h Fri Nov 9 13:50:06 2012
@@ -393,6 +393,11 @@ typedef struct svn_ra_serf__handler_t {
/* The content-type of the request body. */
const char *body_type;
+ /* If TRUE then default Accept-Encoding request header is not configured for
+ request. If FALSE then 'gzip' accept encoding will be used if compression
+ enabled. */
+ svn_boolean_t custom_accept_encoding;
+
/* Has the request/response been completed? */
svn_boolean_t done;
Modified: subversion/trunk/subversion/libsvn_ra_serf/update.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/update.c?rev=1407454&r1=1407453&r2=1407454&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/update.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/update.c Fri Nov 9 13:50:06 2012
@@ -1397,6 +1397,7 @@ fetch_file(report_context_t *ctx, report
handler->conn = conn;
handler->session = ctx->sess;
+ handler->custom_accept_encoding = TRUE;
handler->header_delegate = headers_fetch;
handler->header_delegate_baton = fetch_ctx;
@@ -2416,21 +2417,6 @@ create_update_report_body(serf_bucket_t
}
static svn_error_t *
-headers_report(serf_bucket_t *headers,
- void *baton,
- apr_pool_t *pool)
-{
- report_context_t *report = baton;
-
- if (report->sess->using_compression)
- {
- serf_bucket_headers_setn(headers, "Accept-Encoding", "gzip");
- }
-
- return SVN_NO_ERROR;
-}
-
-static svn_error_t *
finish_report(void *report_baton,
apr_pool_t *pool)
{
@@ -2477,8 +2463,6 @@ finish_report(void *report_baton,
handler->body_type = "text/xml";
handler->conn = sess->conns[0];
handler->session = sess;
- handler->header_delegate = headers_report;
- handler->header_delegate_baton = report;
parser_ctx = apr_pcalloc(pool, sizeof(*parser_ctx));
@@ -3162,6 +3146,7 @@ svn_ra_serf__get_file(svn_ra_session_t *
handler->conn = conn;
handler->session = session;
+ handler->custom_accept_encoding = TRUE;
handler->header_delegate = headers_fetch;
handler->header_delegate_baton = stream_ctx;
Modified: subversion/trunk/subversion/libsvn_ra_serf/util.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/util.c?rev=1407454&r1=1407453&r2=1407454&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/util.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/util.c Fri Nov 9 13:50:06 2012
@@ -636,6 +636,7 @@ setup_serf_req(serf_request_t *request,
svn_ra_serf__session_t *session,
const char *method, const char *url,
serf_bucket_t *body_bkt, const char *content_type,
+ const char *accept_encoding,
apr_pool_t *request_pool,
apr_pool_t *scratch_pool)
{
@@ -696,6 +697,11 @@ setup_serf_req(serf_request_t *request,
serf_bucket_headers_setn(*hdrs_bkt, "Connection", "keep-alive");
#endif
+ if (accept_encoding)
+ {
+ serf_bucket_headers_setn(*hdrs_bkt, "Accept-Encoding", accept_encoding);
+ }
+
/* These headers need to be sent with every request; see issue #3255
("mod_dav_svn does not pass client capabilities to start-commit
hooks") for why. */
@@ -2051,6 +2057,7 @@ setup_request(serf_request_t *request,
{
serf_bucket_t *body_bkt;
serf_bucket_t *headers_bkt;
+ const char *accept_encoding;
if (handler->body_delegate)
{
@@ -2065,9 +2072,23 @@ setup_request(serf_request_t *request,
body_bkt = NULL;
}
+ if (handler->custom_accept_encoding)
+ {
+ accept_encoding = NULL;
+ }
+ else if (handler->session->using_compression)
+ {
+ /* Accept gzip compression if enabled. */
+ accept_encoding = "gzip";
+ }
+ else
+ {
+ accept_encoding = NULL;
+ }
+
SVN_ERR(setup_serf_req(request, req_bkt, &headers_bkt,
handler->session, handler->method, handler->path,
- body_bkt, handler->body_type,
+ body_bkt, handler->body_type, accept_encoding,
request_pool, scratch_pool));
if (handler->header_delegate)