When doing an svn checkout (or svn update), on a repo that is served by
Apache httpd with IIS as a reverse proxy (you are connecting to IIS, not
directly Apache), a HTTP 400 error is thrown (really from IIS).

The problem is that the Accept-Encoding header is the following:

gzip;svndiff1;q=0.9,svndiff;q=0.8

But it should be:

gzip,svndiff1;q=0.9,svndiff;q=0.8

or
​perhaps
:

gzip;q=1.0, svndiff1;q=0.9, svndiff;q=0.8

​T​
he difference is that after gzip there should be a comma, not a semicolon.
​ Semicolons are only meant to separate the accepted encoding from the "q"
parameter. Separate encodings are supposed to be separated by commas.​


As it currently stands, it's not a particularly good HTTP header. Obviously
Apache fixes the error silently, but IIS doesn't.

The problem lies in the file subversion/libsvn_ra_serf/update.c, which was
changed in r1436783, by Ivan Zhakov.

There is a workaround, to disable http compression for any server that
exhibits the problem (by setting http-compression = no in the servers file).

The actual solution, is very simple, so, I'm proposing a patch below
​ (it's just one character).​
​ This is
 the first time I'm
​posting to this list
, so
​let me
know if I should also post this to the dev list
​ or anywhere else​
.


Index: subversion/libsvn_ra_serf/update.c
===================================================================
--- subversion/libsvn_ra_serf/update.c (revision 1497385)
+++ subversion/libsvn_ra_serf/update.c (working copy)
@@ -2739,7 +2739,7 @@ setup_update_report_headers(serf_bucket_t *headers
   if (report->sess->using_compression)
     {
       serf_bucket_headers_setn(headers, "Accept-Encoding",
-                               "gzip;svndiff1;q=0.9,svndiff;q=0.8");
+                               "gzip,svndiff1;q=0.9,svndiff;q=0.8");
     }
   else
     {








-- 
George Schizas
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Afhse me mono mou, emena kai ton klwno mou
Leave me alone, just me and my clone

Reply via email to