Error "mod_dav_svn close_stream: error closing write stream" using a write-through proxy

508 views
Skip to first unread message

Thorsten Schöning

unread,
Aug 15, 2015, 10:17:18 AM8/15/15
to us...@subversion.apache.org
Hi all,

I have several SVN repos served by svnserve for the last years and am
now in the process of implementing access using mod_dav_svn. Our repos
are hosted on a company internal private server with no access from
the public, besides the usual VPN/SSH stuff to some edge firewalls
etc. To make access easier for some customers we decided to make the
repos publicly available using a standard master-slave-setup using
mod_dav_svn, where a public VM is acting as read-only mirror for the
synced repos and is configured as write-through proxy using
SVNMasterURI with our internal repo hoster server as target.

I guess the important part now is how this internal server is reached:
We establish a tunnel using SSH from the internal server to the public
VM and this endpoint in the public VM is configured as SVNMasterURI,
something like http://private.example.org:3692. The tunnel is
forwarding all the traffic to our internal httpd with mod_dav_svn
enabled as well. So besides this SSH tunnel I think everything is
setup like one can read in the official documentation.

Using the private server directly I can read and write to my repos
using svnserve and mod_dav_svn concurrently. Using the public VM I can
read my repos and check them out, update locally comitted changes
etc., but commits are failing. I get the following error in the httpd
log of the target of SVNMasterURI:

> [Sat Aug 15 11:35:13.591510 2015] [dav:error] [client a.b.c.d:36370] mod_dav_svn close_stream: error closing write stream [500, #185004]
> [Sat Aug 15 11:35:13.591525 2015] [dav:error] [client a.b.c.d:36370] Unexpected end of svndiff input [500, #185004]

Looking at the complete logs for one commit it looks like some
operations succeed and in the filesystem I can see that transaction
files get created and such, bit the commit in general doesn't succeed.
It looks like processing the diff from the changed file itself is the
problem somehow.

I already googled for hours for hints, but the messages seem too
general to me, I get things like wrong OpenSSL, to large commits
because of LimitRequestBody and such and none of those apply to my
problem. I'm only committing a very small text file, am using a more
current OpenSSL than the mentioned one etc.

So I would like to ask you if you could be so kind looking at my log
of the commit and provide some hints on what I need to
test/change/whatever? Thanks!

> [Sat Aug 15 11:35:13.391403 2015] [http:trace4] [pid 1:tid 1] http_request.c(301): [client a.b.c.d:36366] Headers received from client:
> [Sat Aug 15 11:35:13.391459 2015] [http:trace4] [pid 1:tid 1] http_request.c(305): [client a.b.c.d:36366] Host: private.example.org:3692
> [Sat Aug 15 11:35:13.391473 2015] [http:trace4] [pid 1:tid 1] http_request.c(305): [client a.b.c.d:36366] Authorization: Basic xyz
> [Sat Aug 15 11:35:13.391485 2015] [http:trace4] [pid 1:tid 1] http_request.c(305): [client a.b.c.d:36366] User-Agent: SVN/1.8.14 (x86_64-unknown-linux-gnu) serf/1.3.7
> [Sat Aug 15 11:35:13.391497 2015] [http:trace4] [pid 1:tid 1] http_request.c(305): [client a.b.c.d:36366] Accept-Encoding: gzip
> [Sat Aug 15 11:35:13.391508 2015] [http:trace4] [pid 1:tid 1] http_request.c(305): [client a.b.c.d:36366] DAV: http://subversion.tigris.org/xmlns/dav/svn/depth, http://subversion.tigris.org/xmlns/dav/svn/mergeinfo, http://subversion.tigris.org/xmlns/dav/svn/log-revprops
> [Sat Aug 15 11:35:13.391520 2015] [http:trace4] [pid 1:tid 1] http_request.c(305): [client a.b.c.d:36366] X-Forwarded-For: 83.218.37.17
> [Sat Aug 15 11:35:13.391532 2015] [http:trace4] [pid 1:tid 1] http_request.c(305): [client a.b.c.d:36366] X-Forwarded-Host: public.example.org
> [Sat Aug 15 11:35:13.391543 2015] [http:trace4] [pid 1:tid 1] http_request.c(305): [client a.b.c.d:36366] X-Forwarded-Server: public.example.org
> [Sat Aug 15 11:35:13.391554 2015] [http:trace4] [pid 1:tid 1] http_request.c(305): [client a.b.c.d:36366] Connection: close
> [Sat Aug 15 11:35:13.391674 2015] [authz_core:debug] [pid 1:tid 1] mod_authz_core.c(802): [client a.b.c.d:36366] AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
> [Sat Aug 15 11:35:13.391714 2015] [authz_core:debug] [pid 1:tid 1] mod_authz_core.c(802): [client a.b.c.d:36366] AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
> [Sat Aug 15 11:35:13.452289 2015] [authz_svn:debug] [pid 1:tid 1] mod_authz_svn.c(407): [client a.b.c.d:36366] Path to authz file is /home/ams_svn_repos/Src/Testprodukt/conf/authz
> [Sat Aug 15 11:35:13.452442 2015] [authz_svn:info] [pid 1:tid 1] [client a.b.c.d:36366] Access granted: 'tscho...@am-soft.de' MKACTIVITY Testprodukt:
> [Sat Aug 15 11:35:13.462429 2015] [http:trace3] [pid 1:tid 1] http_filters.c(979): [client a.b.c.d:36366] Response sent with status 201, headers:
> [Sat Aug 15 11:35:13.462457 2015] [http:trace5] [pid 1:tid 1] http_filters.c(986): [client a.b.c.d:36366] Date: Sat, 15 Aug 2015 09:35:13 GMT
> [Sat Aug 15 11:35:13.462469 2015] [http:trace5] [pid 1:tid 1] http_filters.c(989): [client a.b.c.d:36366] Server: Apache/2.4.7 (Ubuntu)
> [Sat Aug 15 11:35:13.462481 2015] [http:trace4] [pid 1:tid 1] http_filters.c(808): [client a.b.c.d:36366] Cache-Control: no-cache
> [Sat Aug 15 11:35:13.462492 2015] [http:trace4] [pid 1:tid 1] http_filters.c(808): [client a.b.c.d:36366] Location: http://private.example.org:3692/src/Testprodukt/!svn/act/ccc1b698-e402-42e0-afab-4b63de21ded1
> [Sat Aug 15 11:35:13.462503 2015] [http:trace4] [pid 1:tid 1] http_filters.c(808): [client a.b.c.d:36366] Content-Length: 71
> [Sat Aug 15 11:35:13.462514 2015] [http:trace4] [pid 1:tid 1] http_filters.c(808): [client a.b.c.d:36366] Connection: close
> [Sat Aug 15 11:35:13.462524 2015] [http:trace4] [pid 1:tid 1] http_filters.c(808): [client a.b.c.d:36366] Content-Type: text/html; charset=ISO-8859-1
> [Sat Aug 15 11:35:13.477266 2015] [http:trace4] [pid 2:tid 2] http_request.c(301): [client a.b.c.d:36367] Headers received from client:
> [Sat Aug 15 11:35:13.477291 2015] [http:trace4] [pid 2:tid 2] http_request.c(305): [client a.b.c.d:36367] Host: private.example.org:3692
> [Sat Aug 15 11:35:13.477298 2015] [http:trace4] [pid 2:tid 2] http_request.c(305): [client a.b.c.d:36367] Authorization: Basic xyz
> [Sat Aug 15 11:35:13.477305 2015] [http:trace4] [pid 2:tid 2] http_request.c(305): [client a.b.c.d:36367] User-Agent: SVN/1.8.14 (x86_64-unknown-linux-gnu) serf/1.3.7
> [Sat Aug 15 11:35:13.477312 2015] [http:trace4] [pid 2:tid 2] http_request.c(305): [client a.b.c.d:36367] Content-Type: text/xml
> [Sat Aug 15 11:35:13.477319 2015] [http:trace4] [pid 2:tid 2] http_request.c(305): [client a.b.c.d:36367] Accept-Encoding: gzip
> [Sat Aug 15 11:35:13.477325 2015] [http:trace4] [pid 2:tid 2] http_request.c(305): [client a.b.c.d:36367] DAV: http://subversion.tigris.org/xmlns/dav/svn/depth, http://subversion.tigris.org/xmlns/dav/svn/mergeinfo, http://subversion.tigris.org/xmlns/dav/svn/log-revprops
> [Sat Aug 15 11:35:13.477332 2015] [http:trace4] [pid 2:tid 2] http_request.c(305): [client a.b.c.d:36367] X-Forwarded-For: 83.218.37.17
> [Sat Aug 15 11:35:13.477338 2015] [http:trace4] [pid 2:tid 2] http_request.c(305): [client a.b.c.d:36367] X-Forwarded-Host: public.example.org
> [Sat Aug 15 11:35:13.477345 2015] [http:trace4] [pid 2:tid 2] http_request.c(305): [client a.b.c.d:36367] X-Forwarded-Server: public.example.org
> [Sat Aug 15 11:35:13.477350 2015] [http:trace4] [pid 2:tid 2] http_request.c(305): [client a.b.c.d:36367] Connection: close
> [Sat Aug 15 11:35:13.477367 2015] [http:trace4] [pid 2:tid 2] http_request.c(305): [client a.b.c.d:36367] Content-Length: 231
> [Sat Aug 15 11:35:13.477445 2015] [authz_core:debug] [pid 2:tid 2] mod_authz_core.c(802): [client a.b.c.d:36367] AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
> [Sat Aug 15 11:35:13.477457 2015] [authz_core:debug] [pid 2:tid 2] mod_authz_core.c(802): [client a.b.c.d:36367] AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
> [Sat Aug 15 11:35:13.534725 2015] [authz_svn:debug] [pid 2:tid 2] mod_authz_svn.c(407): [client a.b.c.d:36367] Path to authz file is /home/ams_svn_repos/Src/Testprodukt/conf/authz
> [Sat Aug 15 11:35:13.534867 2015] [authz_svn:info] [pid 2:tid 2] [client a.b.c.d:36367] Access granted: 'tscho...@am-soft.de' CHECKOUT Testprodukt:
> [Sat Aug 15 11:35:13.535987 2015] [http:trace3] [pid 2:tid 2] http_filters.c(979): [client a.b.c.d:36367] Response sent with status 201, headers:
> [Sat Aug 15 11:35:13.536000 2015] [http:trace5] [pid 2:tid 2] http_filters.c(986): [client a.b.c.d:36367] Date: Sat, 15 Aug 2015 09:35:13 GMT
> [Sat Aug 15 11:35:13.536007 2015] [http:trace5] [pid 2:tid 2] http_filters.c(989): [client a.b.c.d:36367] Server: Apache/2.4.7 (Ubuntu)
> [Sat Aug 15 11:35:13.536014 2015] [http:trace4] [pid 2:tid 2] http_filters.c(808): [client a.b.c.d:36367] Cache-Control: no-cache
> [Sat Aug 15 11:35:13.536021 2015] [http:trace4] [pid 2:tid 2] http_filters.c(808): [client a.b.c.d:36367] Location: http://private.example.org:3692/src/Testprodukt/!svn/wbl/ccc1b698-e402-42e0-afab-4b63de21ded1/273
> [Sat Aug 15 11:35:13.536027 2015] [http:trace4] [pid 2:tid 2] http_filters.c(808): [client a.b.c.d:36367] Content-Length: 71
> [Sat Aug 15 11:35:13.536033 2015] [http:trace4] [pid 2:tid 2] http_filters.c(808): [client a.b.c.d:36367] Connection: close
> [Sat Aug 15 11:35:13.536039 2015] [http:trace4] [pid 2:tid 2] http_filters.c(808): [client a.b.c.d:36367] Content-Type: text/html; charset=ISO-8859-1
> [Sat Aug 15 11:35:13.547193 2015] [http:trace4] [pid 1:tid 3] http_request.c(301): [client a.b.c.d:36368] Headers received from client:
> [Sat Aug 15 11:35:13.547224 2015] [http:trace4] [pid 1:tid 3] http_request.c(305): [client a.b.c.d:36368] Host: private.example.org:3692
> [Sat Aug 15 11:35:13.547236 2015] [http:trace4] [pid 1:tid 3] http_request.c(305): [client a.b.c.d:36368] Authorization: Basic xyz
> [Sat Aug 15 11:35:13.547247 2015] [http:trace4] [pid 1:tid 3] http_request.c(305): [client a.b.c.d:36368] User-Agent: SVN/1.8.14 (x86_64-unknown-linux-gnu) serf/1.3.7
> [Sat Aug 15 11:35:13.547257 2015] [http:trace4] [pid 1:tid 3] http_request.c(305): [client a.b.c.d:36368] Accept-Encoding: gzip
> [Sat Aug 15 11:35:13.547268 2015] [http:trace4] [pid 1:tid 3] http_request.c(305): [client a.b.c.d:36368] DAV: http://subversion.tigris.org/xmlns/dav/svn/depth, http://subversion.tigris.org/xmlns/dav/svn/mergeinfo, http://subversion.tigris.org/xmlns/dav/svn/log-revprops
> [Sat Aug 15 11:35:13.547279 2015] [http:trace4] [pid 1:tid 3] http_request.c(305): [client a.b.c.d:36368] X-Forwarded-For: 83.218.37.17
> [Sat Aug 15 11:35:13.547289 2015] [http:trace4] [pid 1:tid 3] http_request.c(305): [client a.b.c.d:36368] X-Forwarded-Host: public.example.org
> [Sat Aug 15 11:35:13.547299 2015] [http:trace4] [pid 1:tid 3] http_request.c(305): [client a.b.c.d:36368] X-Forwarded-Server: public.example.org
> [Sat Aug 15 11:35:13.547309 2015] [http:trace4] [pid 1:tid 3] http_request.c(305): [client a.b.c.d:36368] Connection: close
> [Sat Aug 15 11:35:13.547333 2015] [http:trace4] [pid 1:tid 3] http_request.c(305): [client a.b.c.d:36368] Content-Length: 445
> [Sat Aug 15 11:35:13.547408 2015] [authz_core:debug] [pid 1:tid 3] mod_authz_core.c(802): [client a.b.c.d:36368] AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
> [Sat Aug 15 11:35:13.547427 2015] [authz_core:debug] [pid 1:tid 3] mod_authz_core.c(802): [client a.b.c.d:36368] AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
> [Sat Aug 15 11:35:13.552111 2015] [authz_svn:debug] [pid 1:tid 3] mod_authz_svn.c(407): [client a.b.c.d:36368] Path to authz file is /home/ams_svn_repos/Src/Testprodukt/conf/authz
> [Sat Aug 15 11:35:13.552230 2015] [authz_svn:info] [pid 1:tid 3] [client a.b.c.d:36368] Access granted: 'tscho...@am-soft.de' PROPPATCH Testprodukt:
> [Sat Aug 15 11:35:13.557181 2015] [http:trace3] [pid 1:tid 3] http_filters.c(979): [client a.b.c.d:36368] Response sent with status 207, headers:
> [Sat Aug 15 11:35:13.557258 2015] [http:trace5] [pid 1:tid 3] http_filters.c(986): [client a.b.c.d:36368] Date: Sat, 15 Aug 2015 09:35:13 GMT
> [Sat Aug 15 11:35:13.557267 2015] [http:trace5] [pid 1:tid 3] http_filters.c(989): [client a.b.c.d:36368] Server: Apache/2.4.7 (Ubuntu)
> [Sat Aug 15 11:35:13.557276 2015] [http:trace4] [pid 1:tid 3] http_filters.c(808): [client a.b.c.d:36368] Content-Length: 526
> [Sat Aug 15 11:35:13.557285 2015] [http:trace4] [pid 1:tid 3] http_filters.c(808): [client a.b.c.d:36368] Connection: close
> [Sat Aug 15 11:35:13.557293 2015] [http:trace4] [pid 1:tid 3] http_filters.c(808): [client a.b.c.d:36368] Content-Type: text/xml; charset=\\"utf-8\\"
> [Sat Aug 15 11:35:13.566144 2015] [http:trace4] [pid 2:tid 4] http_request.c(301): [client a.b.c.d:36369] Headers received from client:
> [Sat Aug 15 11:35:13.566177 2015] [http:trace4] [pid 2:tid 4] http_request.c(305): [client a.b.c.d:36369] Host: private.example.org:3692
> [Sat Aug 15 11:35:13.566190 2015] [http:trace4] [pid 2:tid 4] http_request.c(305): [client a.b.c.d:36369] Authorization: Basic xyz
> [Sat Aug 15 11:35:13.566201 2015] [http:trace4] [pid 2:tid 4] http_request.c(305): [client a.b.c.d:36369] User-Agent: SVN/1.8.14 (x86_64-unknown-linux-gnu) serf/1.3.7
> [Sat Aug 15 11:35:13.566211 2015] [http:trace4] [pid 2:tid 4] http_request.c(305): [client a.b.c.d:36369] Content-Type: text/xml
> [Sat Aug 15 11:35:13.566222 2015] [http:trace4] [pid 2:tid 4] http_request.c(305): [client a.b.c.d:36369] Accept-Encoding: gzip
> [Sat Aug 15 11:35:13.566232 2015] [http:trace4] [pid 2:tid 4] http_request.c(305): [client a.b.c.d:36369] DAV: http://subversion.tigris.org/xmlns/dav/svn/depth, http://subversion.tigris.org/xmlns/dav/svn/mergeinfo, http://subversion.tigris.org/xmlns/dav/svn/log-revprops
> [Sat Aug 15 11:35:13.566243 2015] [http:trace4] [pid 2:tid 4] http_request.c(305): [client a.b.c.d:36369] X-Forwarded-For: 83.218.37.17
> [Sat Aug 15 11:35:13.566253 2015] [http:trace4] [pid 2:tid 4] http_request.c(305): [client a.b.c.d:36369] X-Forwarded-Host: public.example.org
> [Sat Aug 15 11:35:13.566264 2015] [http:trace4] [pid 2:tid 4] http_request.c(305): [client a.b.c.d:36369] X-Forwarded-Server: public.example.org
> [Sat Aug 15 11:35:13.566274 2015] [http:trace4] [pid 2:tid 4] http_request.c(305): [client a.b.c.d:36369] Connection: close
> [Sat Aug 15 11:35:13.566284 2015] [http:trace4] [pid 2:tid 4] http_request.c(305): [client a.b.c.d:36369] Content-Length: 231
> [Sat Aug 15 11:35:13.566357 2015] [authz_core:debug] [pid 2:tid 4] mod_authz_core.c(802): [client a.b.c.d:36369] AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
> [Sat Aug 15 11:35:13.566377 2015] [authz_core:debug] [pid 2:tid 4] mod_authz_core.c(802): [client a.b.c.d:36369] AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
> [Sat Aug 15 11:35:13.569896 2015] [authz_svn:debug] [pid 2:tid 4] mod_authz_svn.c(407): [client a.b.c.d:36369] Path to authz file is /home/ams_svn_repos/Src/Testprodukt/conf/authz
> [Sat Aug 15 11:35:13.570015 2015] [authz_svn:info] [pid 2:tid 4] [client a.b.c.d:36369] Access granted: 'tscho...@am-soft.de' CHECKOUT Testprodukt:/trunk/testmurksd
> [Sat Aug 15 11:35:13.571032 2015] [http:trace3] [pid 2:tid 4] http_filters.c(979): [client a.b.c.d:36369] Response sent with status 201, headers:
> [Sat Aug 15 11:35:13.571054 2015] [http:trace5] [pid 2:tid 4] http_filters.c(986): [client a.b.c.d:36369] Date: Sat, 15 Aug 2015 09:35:13 GMT
> [Sat Aug 15 11:35:13.571066 2015] [http:trace5] [pid 2:tid 4] http_filters.c(989): [client a.b.c.d:36369] Server: Apache/2.4.7 (Ubuntu)
> [Sat Aug 15 11:35:13.571078 2015] [http:trace4] [pid 2:tid 4] http_filters.c(808): [client a.b.c.d:36369] Cache-Control: no-cache
> [Sat Aug 15 11:35:13.571089 2015] [http:trace4] [pid 2:tid 4] http_filters.c(808): [client a.b.c.d:36369] Location: http://private.example.org:3692/src/Testprodukt/!svn/wrk/ccc1b698-e402-42e0-afab-4b63de21ded1/trunk/testmurksd
> [Sat Aug 15 11:35:13.571101 2015] [http:trace4] [pid 2:tid 4] http_filters.c(808): [client a.b.c.d:36369] Content-Length: 71
> [Sat Aug 15 11:35:13.571111 2015] [http:trace4] [pid 2:tid 4] http_filters.c(808): [client a.b.c.d:36369] Connection: close
> [Sat Aug 15 11:35:13.571122 2015] [http:trace4] [pid 2:tid 4] http_filters.c(808): [client a.b.c.d:36369] Content-Type: text/html; charset=ISO-8859-1
> [Sat Aug 15 11:35:13.582679 2015] [http:trace4] [pid 1:tid 5] http_request.c(301): [client a.b.c.d:36370] Headers received from client:
> [Sat Aug 15 11:35:13.582712 2015] [http:trace4] [pid 1:tid 5] http_request.c(305): [client a.b.c.d:36370] Host: private.example.org:3692
> [Sat Aug 15 11:35:13.582724 2015] [http:trace4] [pid 1:tid 5] http_request.c(305): [client a.b.c.d:36370] Authorization: Basic xyz
> [Sat Aug 15 11:35:13.582735 2015] [http:trace4] [pid 1:tid 5] http_request.c(305): [client a.b.c.d:36370] User-Agent: SVN/1.8.14 (x86_64-unknown-linux-gnu) serf/1.3.7
> [Sat Aug 15 11:35:13.582745 2015] [http:trace4] [pid 1:tid 5] http_request.c(305): [client a.b.c.d:36370] Content-Type: application/vnd.svn-svndiff
> [Sat Aug 15 11:35:13.582756 2015] [http:trace4] [pid 1:tid 5] http_request.c(305): [client a.b.c.d:36370] Accept-Encoding: gzip
> [Sat Aug 15 11:35:13.582766 2015] [http:trace4] [pid 1:tid 5] http_request.c(305): [client a.b.c.d:36370] DAV: http://subversion.tigris.org/xmlns/dav/svn/depth, http://subversion.tigris.org/xmlns/dav/svn/mergeinfo, http://subversion.tigris.org/xmlns/dav/svn/log-revprops
> [Sat Aug 15 11:35:13.582777 2015] [http:trace4] [pid 1:tid 5] http_request.c(305): [client a.b.c.d:36370] X-SVN-Version-Name: 273
> [Sat Aug 15 11:35:13.582788 2015] [http:trace4] [pid 1:tid 5] http_request.c(305): [client a.b.c.d:36370] X-SVN-Base-Fulltext-MD5: 6cbc8906f80deaaa41445363942219e5
> [Sat Aug 15 11:35:13.582798 2015] [http:trace4] [pid 1:tid 5] http_request.c(305): [client a.b.c.d:36370] X-SVN-Result-Fulltext-MD5: b5f6dd4cb3b45cc428106ef3cdf3003c
> [Sat Aug 15 11:35:13.582818 2015] [http:trace4] [pid 1:tid 5] http_request.c(305): [client a.b.c.d:36370] X-Forwarded-For: 83.218.37.17
> [Sat Aug 15 11:35:13.582830 2015] [http:trace4] [pid 1:tid 5] http_request.c(305): [client a.b.c.d:36370] X-Forwarded-Host: public.example.org
> [Sat Aug 15 11:35:13.582840 2015] [http:trace4] [pid 1:tid 5] http_request.c(305): [client a.b.c.d:36370] X-Forwarded-Server: public.example.org
> [Sat Aug 15 11:35:13.582850 2015] [http:trace4] [pid 1:tid 5] http_request.c(305): [client a.b.c.d:36370] Connection: close
> [Sat Aug 15 11:35:13.582861 2015] [http:trace4] [pid 1:tid 5] http_request.c(305): [client a.b.c.d:36370] Content-Length: 29
> [Sat Aug 15 11:35:13.582916 2015] [authz_core:debug] [pid 1:tid 5] mod_authz_core.c(802): [client a.b.c.d:36370] AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
> [Sat Aug 15 11:35:13.582935 2015] [authz_core:debug] [pid 1:tid 5] mod_authz_core.c(802): [client a.b.c.d:36370] AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
> [Sat Aug 15 11:35:13.585847 2015] [authz_svn:debug] [pid 1:tid 5] mod_authz_svn.c(407): [client a.b.c.d:36370] Path to authz file is /home/ams_svn_repos/Src/Testprodukt/conf/authz
> [Sat Aug 15 11:35:13.586783 2015] [authz_svn:info] [pid 1:tid 5] [client a.b.c.d:36370] Access granted: 'tscho...@am-soft.de' PUT Testprodukt:/trunk/testmurksd
> [Sat Aug 15 11:35:13.587640 2015] [authz_core:debug] [pid 1:tid 5] mod_authz_core.c(802): [client a.b.c.d:36370] AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
> [Sat Aug 15 11:35:13.587665 2015] [authz_core:debug] [pid 1:tid 5] mod_authz_core.c(802): [client a.b.c.d:36370] AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
> [Sat Aug 15 11:35:13.590199 2015] [authz_svn:debug] [pid 1:tid 5] mod_authz_svn.c(407): [client a.b.c.d:36370] Path to authz file is /home/ams_svn_repos/Src/Testprodukt/conf/authz
> [Sat Aug 15 11:35:13.590231 2015] [authz_svn:info] [pid 1:tid 5] [client a.b.c.d:36370] Access granted: 'tscho...@am-soft.de' GET Testprodukt:/trunk/testmurksd
> [Sat Aug 15 11:35:13.591510 2015] [dav:error] [pid 1:tid 5] [client a.b.c.d:36370] mod_dav_svn close_stream: error closing write stream [500, #185004]
> [Sat Aug 15 11:35:13.591525 2015] [dav:error] [pid 1:tid 5] [client a.b.c.d:36370] Unexpected end of svndiff input [500, #185004]
> [Sat Aug 15 11:35:13.591549 2015] [http:trace3] [pid 1:tid 5] http_filters.c(979): [client a.b.c.d:36370] Response sent with status 500, headers:
> [Sat Aug 15 11:35:13.591558 2015] [http:trace5] [pid 1:tid 5] http_filters.c(986): [client a.b.c.d:36370] Date: Sat, 15 Aug 2015 09:35:13 GMT
> [Sat Aug 15 11:35:13.591565 2015] [http:trace5] [pid 1:tid 5] http_filters.c(989): [client a.b.c.d:36370] Server: Apache/2.4.7 (Ubuntu)
> [Sat Aug 15 11:35:13.591572 2015] [http:trace4] [pid 1:tid 5] http_filters.c(808): [client a.b.c.d:36370] Content-Length: 227
> [Sat Aug 15 11:35:13.591578 2015] [http:trace4] [pid 1:tid 5] http_filters.c(808): [client a.b.c.d:36370] Connection: close
> [Sat Aug 15 11:35:13.591584 2015] [http:trace4] [pid 1:tid 5] http_filters.c(808): [client a.b.c.d:36370] Content-Type: text/xml; charset=\\"utf-8\\"
> [Sat Aug 15 11:35:13.693576 2015] [http:trace4] [pid 2:tid 6] http_request.c(301): [client a.b.c.d:36371] Headers received from client:
> [Sat Aug 15 11:35:13.693638 2015] [http:trace4] [pid 2:tid 6] http_request.c(305): [client a.b.c.d:36371] Host: private.example.org:3692
> [Sat Aug 15 11:35:13.693652 2015] [http:trace4] [pid 2:tid 6] http_request.c(305): [client a.b.c.d:36371] Authorization: Basic xyz
> [Sat Aug 15 11:35:13.693663 2015] [http:trace4] [pid 2:tid 6] http_request.c(305): [client a.b.c.d:36371] User-Agent: SVN/1.8.14 (x86_64-unknown-linux-gnu) serf/1.3.7
> [Sat Aug 15 11:35:13.693674 2015] [http:trace4] [pid 2:tid 6] http_request.c(305): [client a.b.c.d:36371] Accept-Encoding: gzip
> [Sat Aug 15 11:35:13.693684 2015] [http:trace4] [pid 2:tid 6] http_request.c(305): [client a.b.c.d:36371] DAV: http://subversion.tigris.org/xmlns/dav/svn/depth, http://subversion.tigris.org/xmlns/dav/svn/mergeinfo, http://subversion.tigris.org/xmlns/dav/svn/log-revprops
> [Sat Aug 15 11:35:13.693695 2015] [http:trace4] [pid 2:tid 6] http_request.c(305): [client a.b.c.d:36371] X-Forwarded-For: 83.218.37.17
> [Sat Aug 15 11:35:13.693706 2015] [http:trace4] [pid 2:tid 6] http_request.c(305): [client a.b.c.d:36371] X-Forwarded-Host: public.example.org
> [Sat Aug 15 11:35:13.693716 2015] [http:trace4] [pid 2:tid 6] http_request.c(305): [client a.b.c.d:36371] X-Forwarded-Server: public.example.org
> [Sat Aug 15 11:35:13.693726 2015] [http:trace4] [pid 2:tid 6] http_request.c(305): [client a.b.c.d:36371] Connection: close
> [Sat Aug 15 11:35:13.693798 2015] [authz_core:debug] [pid 2:tid 6] mod_authz_core.c(802): [client a.b.c.d:36371] AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
> [Sat Aug 15 11:35:13.693824 2015] [authz_core:debug] [pid 2:tid 6] mod_authz_core.c(802): [client a.b.c.d:36371] AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
> [Sat Aug 15 11:35:13.698101 2015] [authz_svn:debug] [pid 2:tid 6] mod_authz_svn.c(407): [client a.b.c.d:36371] Path to authz file is /home/ams_svn_repos/Src/Testprodukt/conf/authz
> [Sat Aug 15 11:35:13.698214 2015] [authz_svn:info] [pid 2:tid 6] [client a.b.c.d:36371] Access granted: 'tscho...@am-soft.de' DELETE Testprodukt:
> [Sat Aug 15 11:35:13.699243 2015] [http:trace3] [pid 2:tid 6] http_filters.c(979): [client a.b.c.d:36371] Response sent with status 204, headers:
> [Sat Aug 15 11:35:13.699265 2015] [http:trace5] [pid 2:tid 6] http_filters.c(986): [client a.b.c.d:36371] Date: Sat, 15 Aug 2015 09:35:13 GMT
> [Sat Aug 15 11:35:13.699277 2015] [http:trace5] [pid 2:tid 6] http_filters.c(989): [client a.b.c.d:36371] Server: Apache/2.4.7 (Ubuntu)
> [Sat Aug 15 11:35:13.699289 2015] [http:trace4] [pid 2:tid 6] http_filters.c(808): [client a.b.c.d:36371] Content-Length: 0
> [Sat Aug 15 11:35:13.699300 2015] [http:trace4] [pid 2:tid 6] http_filters.c(808): [client a.b.c.d:36371] Connection: close

My ssh log:

> ssh -vvv -o TCPKeepAlive=no -o ServerAliveInterval=2 -p 12321 -N -R localhost:3692:private.example.org:80 public.example.org

> OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
> Authenticated to public.example.org ([w.x.y.z]:12321).
> debug1: Remote connections from localhost:3692 forwarded to local address private.example.org:80
> debug2: fd 3 setting TCP_NODELAY
> debug3: packet_set_tos: set IP_TOS 0x10
> debug1: Requesting no-more-...@openssh.com
> debug1: Entering interactive session.
> debug1: remote forward success for: listen 3692, connect private.example.org:80
> debug1: All remote forwarding requests processed
> debug1: client_input_channel_open: ctype forwarded-tcpip rchan 2 win 2097152 max 32768
> debug1: client_request_forwarded_tcpip: listen localhost port 3692, originator 127.0.0.1 port 48451
> debug2: fd 4 setting O_NONBLOCK
> debug1: connect_next: host private.example.org ([a.b.c.e]:80) in progress, fd=4
> debug2: fd 4 setting TCP_NODELAY
> debug3: fd 4 is O_NONBLOCK
> debug3: fd 4 is O_NONBLOCK
> debug1: channel 0: new [127.0.0.1]
> debug1: confirm forwarded-tcpip
> debug3: channel 0: waiting for connection
> debug1: channel 0: connected to private.example.org port 80
> debug2: channel 0: read<=0 rfd 4 len 0
> debug2: channel 0: read failed
> debug2: channel 0: close_read
> debug2: channel 0: input open -> drain
> debug2: channel 0: ibuf empty
> debug2: channel 0: send eof
> debug2: channel 0: input drain -> closed
> debug2: channel 0: rcvd eof
> debug2: channel 0: output open -> drain
> debug2: channel 0: obuf empty
> debug2: channel 0: close_write
> debug2: channel 0: output drain -> closed
> debug2: channel 0: rcvd close
> debug3: channel 0: will not send data after close
> debug2: channel 0: send close
> debug2: channel 0: is dead
> debug2: channel 0: garbage collecting
> debug1: channel 0: free: 127.0.0.1, nchannels 1
> debug3: channel 0: status: The following connections are open:
> #0 127.0.0.1 (t4 r2 i3/0 o3/0 fd 4/4 cc -1)
>
> debug1: client_input_channel_open: ctype forwarded-tcpip rchan 2 win 2097152 max 32768
> debug1: client_request_forwarded_tcpip: listen localhost port 3692, originator 127.0.0.1 port 48452
> debug2: fd 4 setting O_NONBLOCK
> debug1: connect_next: host private.example.org ([a.b.c.e]:80) in progress, fd=4
> debug2: fd 4 setting TCP_NODELAY
> debug3: fd 4 is O_NONBLOCK
> debug3: fd 4 is O_NONBLOCK
> debug1: channel 0: new [127.0.0.1]
> debug1: confirm forwarded-tcpip
> debug3: channel 0: waiting for connection
> debug1: channel 0: connected to private.example.org port 80
> debug2: channel 0: read<=0 rfd 4 len 0
> debug2: channel 0: read failed
> debug2: channel 0: close_read
> debug2: channel 0: input open -> drain
> debug2: channel 0: ibuf empty
> debug2: channel 0: send eof
> debug2: channel 0: input drain -> closed
> debug2: channel 0: rcvd eof
> debug2: channel 0: output open -> drain
> debug2: channel 0: obuf empty
> debug2: channel 0: close_write
> debug2: channel 0: output drain -> closed
> debug2: channel 0: rcvd close
> debug3: channel 0: will not send data after close
> debug2: channel 0: send close
> debug2: channel 0: is dead
> debug2: channel 0: garbage collecting
> debug1: channel 0: free: 127.0.0.1, nchannels 1
> debug3: channel 0: status: The following connections are open:
> #0 127.0.0.1 (t4 r2 i3/0 o3/0 fd 4/4 cc -1)
>
> debug1: client_input_channel_open: ctype forwarded-tcpip rchan 2 win 2097152 max 32768
> debug1: client_request_forwarded_tcpip: listen localhost port 3692, originator 127.0.0.1 port 48453
> debug2: fd 4 setting O_NONBLOCK
> debug1: connect_next: host private.example.org ([a.b.c.e]:80) in progress, fd=4
> debug2: fd 4 setting TCP_NODELAY
> debug3: fd 4 is O_NONBLOCK
> debug3: fd 4 is O_NONBLOCK
> debug1: channel 0: new [127.0.0.1]
> debug1: confirm forwarded-tcpip
> debug3: channel 0: waiting for connection
> debug1: channel 0: connected to private.example.org port 80
> debug2: channel 0: read<=0 rfd 4 len 0
> debug2: channel 0: read failed
> debug2: channel 0: close_read
> debug2: channel 0: input open -> drain
> debug2: channel 0: ibuf empty
> debug2: channel 0: send eof
> debug2: channel 0: input drain -> closed
> debug2: channel 0: rcvd eof
> debug2: channel 0: output open -> drain
> debug2: channel 0: obuf empty
> debug2: channel 0: close_write
> debug2: channel 0: output drain -> closed
> debug2: channel 0: rcvd close
> debug3: channel 0: will not send data after close
> debug2: channel 0: send close
> debug2: channel 0: is dead
> debug2: channel 0: garbage collecting
> debug1: channel 0: free: 127.0.0.1, nchannels 1
> debug3: channel 0: status: The following connections are open:
> #0 127.0.0.1 (t4 r2 i3/0 o3/0 fd 4/4 cc -1)
>
> debug1: client_input_channel_open: ctype forwarded-tcpip rchan 2 win 2097152 max 32768
> debug1: client_request_forwarded_tcpip: listen localhost port 3692, originator 127.0.0.1 port 48454
> debug2: fd 4 setting O_NONBLOCK
> debug1: connect_next: host private.example.org ([a.b.c.e]:80) in progress, fd=4
> debug2: fd 4 setting TCP_NODELAY
> debug3: fd 4 is O_NONBLOCK
> debug3: fd 4 is O_NONBLOCK
> debug1: channel 0: new [127.0.0.1]
> debug1: confirm forwarded-tcpip
> debug3: channel 0: waiting for connection
> debug1: channel 0: connected to private.example.org port 80
> debug2: channel 0: read<=0 rfd 4 len 0
> debug2: channel 0: read failed
> debug2: channel 0: close_read
> debug2: channel 0: input open -> drain
> debug2: channel 0: ibuf empty
> debug2: channel 0: send eof
> debug2: channel 0: input drain -> closed
> debug2: channel 0: rcvd eof
> debug2: channel 0: output open -> drain
> debug2: channel 0: obuf empty
> debug2: channel 0: close_write
> debug2: channel 0: output drain -> closed
> debug2: channel 0: rcvd close
> debug3: channel 0: will not send data after close
> debug2: channel 0: send close
> debug2: channel 0: is dead
> debug2: channel 0: garbage collecting
> debug1: channel 0: free: 127.0.0.1, nchannels 1
> debug3: channel 0: status: The following connections are open:
> #0 127.0.0.1 (t4 r2 i3/0 o3/0 fd 4/4 cc -1)
>
> debug1: client_input_channel_open: ctype forwarded-tcpip rchan 2 win 2097152 max 32768
> debug1: client_request_forwarded_tcpip: listen localhost port 3692, originator 127.0.0.1 port 48455
> debug2: fd 4 setting O_NONBLOCK
> debug1: connect_next: host private.example.org ([a.b.c.e]:80) in progress, fd=4
> debug2: fd 4 setting TCP_NODELAY
> debug3: fd 4 is O_NONBLOCK
> debug3: fd 4 is O_NONBLOCK
> debug1: channel 0: new [127.0.0.1]
> debug1: confirm forwarded-tcpip
> debug3: channel 0: waiting for connection
> debug1: channel 0: connected to private.example.org port 80
> debug2: channel 0: read<=0 rfd 4 len 0
> debug2: channel 0: read failed
> debug2: channel 0: close_read
> debug2: channel 0: input open -> drain
> debug2: channel 0: ibuf empty
> debug2: channel 0: send eof
> debug2: channel 0: input drain -> closed
> debug2: channel 0: rcvd eof
> debug2: channel 0: output open -> drain
> debug2: channel 0: obuf empty
> debug2: channel 0: close_write
> debug2: channel 0: output drain -> closed
> debug2: channel 0: rcvd close
> debug3: channel 0: will not send data after close
> debug2: channel 0: send close
> debug2: channel 0: is dead
> debug2: channel 0: garbage collecting
> debug1: channel 0: free: 127.0.0.1, nchannels 1
> debug3: channel 0: status: The following connections are open:
> #0 127.0.0.1 (t4 r2 i3/0 o3/0 fd 4/4 cc -1)
>
> debug1: client_input_channel_open: ctype forwarded-tcpip rchan 2 win 2097152 max 32768
> debug1: client_request_forwarded_tcpip: listen localhost port 3692, originator 127.0.0.1 port 48456
> debug2: fd 4 setting O_NONBLOCK
> debug1: connect_next: host private.example.org ([a.b.c.e]:80) in progress, fd=4
> debug2: fd 4 setting TCP_NODELAY
> debug3: fd 4 is O_NONBLOCK
> debug3: fd 4 is O_NONBLOCK
> debug1: channel 0: new [127.0.0.1]
> debug1: confirm forwarded-tcpip
> debug3: channel 0: waiting for connection
> debug1: channel 0: connected to private.example.org port 80
> debug2: channel 0: read<=0 rfd 4 len 0
> debug2: channel 0: read failed
> debug2: channel 0: close_read
> debug2: channel 0: input open -> drain
> debug2: channel 0: ibuf empty
> debug2: channel 0: send eof
> debug2: channel 0: input drain -> closed
> debug2: channel 0: rcvd eof
> debug2: channel 0: output open -> drain
> debug2: channel 0: obuf empty
> debug2: channel 0: close_write
> debug2: channel 0: output drain -> closed
> debug2: channel 0: rcvd close
> debug3: channel 0: will not send data after close
> debug2: channel 0: send close
> debug2: channel 0: is dead
> debug2: channel 0: garbage collecting
> debug1: channel 0: free: 127.0.0.1, nchannels 1
> debug3: channel 0: status: The following connections are open:
> #0 127.0.0.1 (t4 r2 i3/0 o3/0 fd 4/4 cc -1)

Mit freundlichen Grüßen,

Thorsten Schöning

--
Thorsten Schöning E-Mail: Thorsten....@AM-SoFT.de
AM-SoFT IT-Systeme http://www.AM-SoFT.de/

Telefon...........05151- 9468- 55
Fax...............05151- 9468- 88
Mobil..............0178-8 9468- 04

AM-SoFT GmbH IT-Systeme, Brandenburger Str. 7c, 31789 Hameln
AG Hannover HRB 207 694 - Geschäftsführer: Andreas Muchow

Nico Kadel-Garcia

unread,
Aug 15, 2015, 12:14:27 PM8/15/15
to Thorsten Schöning, Subversion
Why don't you just use svn+ssh, and stay out of using HTTPS at all?
Given the skew in libraries and HTTPD requirement with every major
release of Subversion, even I can no longer sanely backport the
current version of Subversion, especially mod_dav_svn, to stable
operating systems like CentOS 5 and CentOS 6. Why not avoid all the
HTTP/neon/serf/mod_dav integration altothegether and supply switch to
using your existing svnserve setup, with the relevant SSH key wrapper?

If you also need SSH chroot cages or other security aspects to ensure
that repositories are only visible to the relevant client, ask, I'll
point you to relevant tools.

Thorsten Schöning

unread,
Aug 16, 2015, 5:21:33 AM8/16/15
to Subversion
Guten Tag Nico Kadel-Garcia,
am Samstag, 15. August 2015 um 18:14 schrieben Sie:

> Why don't you just use svn+ssh, and stay out of using HTTPS at all?

I've considered that and in fact some of our customers already use SSH
inbound to our private server and access via svnserve and it works for
some, but not very well for others. All that SSH settings and key
stuff and dealing with company proxys and saving things user specific
in case of different admins and some use terminal servers with generic
users and some not and such is something I would like to avoid in the
future. I primary want transport security and there are some other
reasons to use mod_dav_svn as well:

* I want a read only mirror independently of our private server, which
is sufficient for most customers
* Some customers want write access, though
* I don't want to give various people access to our internal network
just to retrieve updates anymore
* I always liked the idea of browsing the repo using a browser and
WebSVN e.g. is not maintained anymore, so I try other ways

svnserve using SASL looks like a better option to get transport
security for me, but doesn't provide the master-slave setup like
mod_dav_svn does. At least not that I know of...

Nico Kadel-Garcia

unread,
Aug 16, 2015, 8:58:21 AM8/16/15
to Thorsten Schöning, Subversion
On Sun, Aug 16, 2015 at 5:21 AM, Thorsten Schöning
<tscho...@am-soft.de> wrote:
> Guten Tag Nico Kadel-Garcia,
> am Samstag, 15. August 2015 um 18:14 schrieben Sie:
>
>> Why don't you just use svn+ssh, and stay out of using HTTPS at all?
>
> I've considered that and in fact some of our customers already use SSH
> inbound to our private server and access via svnserve and it works for
> some, but not very well for others. All that SSH settings and key
> stuff and dealing with company proxys and saving things user specific
> in case of different admins and some use terminal servers with generic
> users and some not and such is something I would like to avoid in the
> future. I primary want transport security and there are some other
> reasons to use mod_dav_svn as well:

Cool. I'm glad you thought about it: rejecting something for good
reasons is the sign of a good admin. The lack of good key
administration tools for svn+ssh is one of my problems with it.

> * I want a read only mirror independently of our private server, which
> is sufficient for most customers

But you need an *authenticated* mirror, right? As opposed to a public mirror?

> * Some customers want write access, though
> * I don't want to give various people access to our internal network
> just to retrieve updates anymore
> * I always liked the idea of browsing the repo using a browser and
> WebSVN e.g. is not maintained anymore, so I try other ways

ViewVC is my friend for pure visual web access, it's packaged for most
distributions and is well maintained.

> svnserve using SASL looks like a better option to get transport
> security for me, but doesn't provide the master-slave setup like
> mod_dav_svn does. At least not that I know of...

Ahh. Hmm. I'm not sure why it couldn't, if you can propagate the
configurations for access among the different masters and slaves, and
simply designate the slave servers with the svnserve *daemon's* user
account having only read access to the relevant repositories.

Thorsten Schöning

unread,
Aug 16, 2015, 12:00:23 PM8/16/15
to Subversion
Guten Tag Nico Kadel-Garcia,
am Sonntag, 16. August 2015 um 14:58 schrieben Sie:

> But you need an *authenticated* mirror, right? As opposed to a public mirror?

Yes, some repos contain data of different customers and we don't want
them to see each other, which is currently working great with path
based authorization using authz files and mod_dav_svn is using the
same ones.

But looking at my problem I don't think authorization itself would
make any difference. Instead it seems that commits in general are
failing because of some incompatibility with my SSH tunnel. Which is
interesting because I successfully commit using svnserve over a SSH
tunnel for years now...

> ViewVC is my friend for pure visual web access, it's packaged for most
> distributions and is well maintained.

Sounds I need to have a second look, I had the impression there's not
much activity anymore as well. One important reason using WebSVN in the
past was that I found it to be far more beautiful with its default
templates already and somewhat easier to install. But ongoing
maintenance is a joker of course. :-)

> Ahh. Hmm. I'm not sure why it couldn't, if you can propagate the
> configurations for access among the different masters and slaves, and
> simply designate the slave servers with the svnserve *daemon's* user
> account having only read access to the relevant repositories.

From my understanding the important part about using master-slave with
mod_dav_svn is SVNMasterURI, so you have one endpoint for all users
and depending on what a user tries to do mod_dav_svn either serves
read only operations on its own or forwards write access to the
configured target. But all users always use the same entry point. I
don't see how this is possible using svnserve only, because it simply
lacks that forwarding logic to a master writable repo.

And that's what I want: All my customers should only access the same
public VM for their repos, regardless if they have write access or
not. If they get write access in the future, they don't need to change
anything, just commit and mod_dav_svn handles everything else. In
theory...

Thorsten Schöning

unread,
Aug 17, 2015, 1:59:29 PM8/17/15
to us...@subversion.apache.org
Guten Tag Thorsten Schöning,
am Samstag, 15. August 2015 um 16:16 schrieben Sie:

>> [Sat Aug 15 11:35:13.591510 2015] [dav:error] [client a.b.c.d:36370] mod_dav_svn close_stream: error closing write stream [500, #185004]
>> [Sat Aug 15 11:35:13.591525 2015] [dav:error] [client a.b.c.d:36370] Unexpected end of svndiff input [500, #185004]

Using tcpdump and wireshark I was able to capture unencrypted traffic
from the local part of my SSH tunnel to my private httpd and back.
Request is coming from port 1 to httpd port 80 and the response gets
send back from port 80 to port 1 and is then forwarded through the
tunnel to the public httpd and from there to my client which is
showing the error. So the communication in general should work and it
doesn't look like a connection is closed to early or such, else the
error wouldn't be received by my client and I wouldn't get unencrypted
data heading port 80 of my local httpd...

In the request I can even see my changed data with the correct
svndiff0 header and such, just like from a local successing commit.
Some headers differ, but I guess that's because mod_proxy and I
couldn't get it to force chunked encoding and such, it just seemed to
ignore it.

I simply don't understand why svn is failing to read the svndiff
window properly...

> 44 17:16:15.058222 192.168.100.20 192.168.100.2 HTTP 914 PUT /src/Testprodukt/!svn/wrk/d73a9537-4083-0e40-aab3-e4bd2f9156e6/trunk/testmurks.txt HTTP/1.1 (application/vnd.svn-svndiff)

> 0000 00 00 03 04 00 06 00 00 00 00 00 00 00 00 08 00 ................
> 0010 45 00 03 82 6a e6 40 00 40 06 83 28 c0 a8 64 14 E...j.@.@..(..d.
> 0020 c0 a8 64 02 9d d8 00 50 88 09 22 45 4a ab 6e af ..d....P.."EJ.n.
> 0030 80 18 01 56 4c dc 00 00 01 01 08 0a 02 aa 48 a1 ...VL.........H.
> 0040 02 aa 48 a0 50 55 54 20 2f 73 72 63 2f 54 65 73 ..H.PUT /src/Tes
> 0050 74 70 72 6f 64 75 6b 74 2f 21 73 76 6e 2f 77 72 tprodukt/!svn/wr
> 0060 6b 2f 64 37 33 61 39 35 33 37 2d 34 30 38 33 2d k/d73a9537-4083-
> 0070 30 65 34 30 2d 61 61 62 33 2d 65 34 62 64 32 66 0e40-aab3-e4bd2f
> 0080 39 31 35 36 65 36 2f 74 72 75 6e 6b 2f 74 65 73 9156e6/trunk/tes
> 0090 74 6d 75 72 6b 73 2e 74 78 74 20 48 54 54 50 2f tmurks.txt HTTP/
> 00a0 31 2e 31 0d 0a 48 6f 73 74 3a 20 73 75 62 76 65 1.1..Host: subve
> 00b0 72 73 69 6f 6e 2e 70 6f 74 73 64 61 6d 2e 61 6d rsion.potsdam.am
> 00c0 2d 73 6f 66 74 2e 64 65 3a 33 36 39 32 0d 0a 41 -soft.de:3692..A
> 00d0 75 74 68 6f 72 69 7a 61 74 69 6f 6e 3a 20 42 61 uthorization: Ba
[...]
> 0110 65 72 2d 41 67 65 6e 74 3a 20 53 56 4e 2f 31 2e er-Agent: SVN/1.
> 0120 39 2e 30 20 28 78 36 34 2d 6d 69 63 72 6f 73 6f 9.0 (x64-microso
> 0130 66 74 2d 77 69 6e 64 6f 77 73 29 20 73 65 72 66 ft-windows) serf
> 0140 2f 31 2e 33 2e 38 20 54 6f 72 74 6f 69 73 65 53 /1.3.8 TortoiseS
> 0150 56 4e 2d 31 2e 39 2e 30 2e 32 36 36 35 32 0d 0a VN-1.9.0.26652..
> 0160 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 61 70 Content-Type: ap
> 0170 70 6c 69 63 61 74 69 6f 6e 2f 76 6e 64 2e 73 76 plication/vnd.sv
> 0180 6e 2d 73 76 6e 64 69 66 66 0d 0a 41 63 63 65 70 n-svndiff..Accep
> 0190 74 2d 45 6e 63 6f 64 69 6e 67 3a 20 67 7a 69 70 t-Encoding: gzip
> 01a0 0d 0a 44 41 56 3a 20 68 74 74 70 3a 2f 2f 73 75 ..DAV: http://su
> 01b0 62 76 65 72 73 69 6f 6e 2e 74 69 67 72 69 73 2e bversion.tigris.
> 01c0 6f 72 67 2f 78 6d 6c 6e 73 2f 64 61 76 2f 73 76 org/xmlns/dav/sv
> 01d0 6e 2f 64 65 70 74 68 2c 20 68 74 74 70 3a 2f 2f n/depth, http://
> 01e0 73 75 62 76 65 72 73 69 6f 6e 2e 74 69 67 72 69 subversion.tigri
> 01f0 73 2e 6f 72 67 2f 78 6d 6c 6e 73 2f 64 61 76 2f s.org/xmlns/dav/
> 0200 73 76 6e 2f 6d 65 72 67 65 69 6e 66 6f 2c 20 68 svn/mergeinfo, h
> 0210 74 74 70 3a 2f 2f 73 75 62 76 65 72 73 69 6f 6e ttp://subversion
> 0220 2e 74 69 67 72 69 73 2e 6f 72 67 2f 78 6d 6c 6e .tigris.org/xmln
> 0230 73 2f 64 61 76 2f 73 76 6e 2f 6c 6f 67 2d 72 65 s/dav/svn/log-re
> 0240 76 70 72 6f 70 73 0d 0a 58 2d 53 56 4e 2d 56 65 vprops..X-SVN-Ve
> 0250 72 73 69 6f 6e 2d 4e 61 6d 65 3a 20 32 37 39 0d rsion-Name: 279.
> 0260 0a 58 2d 53 56 4e 2d 42 61 73 65 2d 46 75 6c 6c .X-SVN-Base-Full
> 0270 74 65 78 74 2d 4d 44 35 3a 20 37 63 33 36 66 34 text-MD5: 7c36f4
> 0280 33 34 64 62 65 66 39 37 32 64 36 33 62 62 38 61 34dbef972d63bb8a
> 0290 64 33 38 38 64 33 35 39 61 63 0d 0a 58 2d 53 56 d388d359ac..X-SV
> 02a0 4e 2d 52 65 73 75 6c 74 2d 46 75 6c 6c 74 65 78 N-Result-Fulltex
> 02b0 74 2d 4d 44 35 3a 20 39 34 64 66 36 33 38 36 38 t-MD5: 94df63868
> 02c0 32 38 65 36 33 61 66 31 39 64 32 37 63 32 31 36 28e63af19d27c216
> 02d0 33 37 61 37 37 66 62 0d 0a 58 2d 46 6f 72 77 61 37a77fb..X-Forwa
> 02e0 72 64 65 64 2d 46 6f 72 3a 20 31 37 38 2e 30 2e rded-For: 178.0.
> 02f0 39 37 2e 32 30 36 0d 0a 58 2d 46 6f 72 77 61 72 97.206..X-Forwar
> 0300 64 65 64 2d 48 6f 73 74 3a 20 73 6f 66 74 77 61 ded-Host: softwa
> 0310 72 65 2e 65 6c 72 65 76 2e 6e 65 74 0d 0a 58 2d re.elrev.net..X-
> 0320 46 6f 72 77 61 72 64 65 64 2d 53 65 72 76 65 72 Forwarded-Server
> 0330 3a 20 73 6f 66 74 77 61 72 65 2e 65 6c 72 65 76 : software.elrev
> 0340 2e 6e 65 74 0d 0a 43 6f 6e 6e 65 63 74 69 6f 6e .net..Connection
> 0350 3a 20 63 6c 6f 73 65 0d 0a 43 6f 6e 74 65 6e 74 : close..Content
> 0360 2d 4c 65 6e 67 74 68 3a 20 33 35 0d 0a 0d 0a 53 -Length: 35....S
> 0370 56 4e 00 00 82 6b 82 7d 08 10 00 82 5c 00 90 11 VN...k.}....\...
> 0380 82 5a 0d 0a 6d 75 72 6b 73 64 72 65 63 6b 0d 0a .Z..murksdreck..
> 0390 0d 0a ..

> 46 17:16:15.064797 192.168.100.2 192.168.100.20 HTTP/XML 482 HTTP/1.1 500 Internal Server Error

Thorsten Schöning

unread,
Aug 17, 2015, 2:03:46 PM8/17/15
to us...@subversion.apache.org
Guten Tag Thorsten Schöning,
am Montag, 17. August 2015 um 19:59 schrieben Sie:

>> 44 17:16:15.058222 192.168.100.20 192.168.100.2 HTTP 914 PUT /src/Testprodukt/!svn/wrk/d73a9537-4083-0e40-aab3-e4bd2f9156e6/trunk/testmurks.txt HTTP/1.1 (application/vnd.svn-svndiff)

A readable version:

> PUT /src/Testprodukt/!svn/wrk/d73a9537-4083-0e40-aab3-e4bd2f9156e6/trunk/testmurks.txt HTTP/1.1
> Host: subversion.potsdam.am-soft.de:3692
> Authorization: Basic
> User-Agent: SVN/1.9.0 (x64-microsoft-windows) serf/1.3.8 TortoiseSVN-1.9.0.26652
> Content-Type: application/vnd.svn-svndiff
> Accept-Encoding: gzip
> X-SVN-Version-Name: 279
> X-SVN-Base-Fulltext-MD5: 7c36f434dbef972d63bb8ad388d359ac
> X-SVN-Result-Fulltext-MD5: 94df6386828e63af19d27c21637a77fb
> X-Forwarded-For: 178.0.97.206
> X-Forwarded-Host: software.elrev.net
> X-Forwarded-Server: software.elrev.net
> Connection: close
> Content-Length: 35
>
> SVNk}\Z
> murksdreck

Thorsten Schöning

unread,
Aug 18, 2015, 2:42:59 PM8/18/15
to us...@subversion.apache.org
Guten Tag Thorsten Schöning,
am Samstag, 15. August 2015 um 16:16 schrieben Sie:

>> [Sat Aug 15 11:35:13.591510 2015] [dav:error] [client a.b.c.d:36370] mod_dav_svn close_stream: error closing write stream [500, #185004]
>> [Sat Aug 15 11:35:13.591525 2015] [dav:error] [client a.b.c.d:36370] Unexpected end of svndiff input [500, #185004]

Looks like I found my problem and it had nothing to do with the SSH
tunnel: I configured and implemented my own PerlAuthenHandler to be
able to reuse the already existing passwd of my svnserve-repos. For
this to work the handler needs to retrieve the repo name from the URI
of a request. I still use WebSVN and wanted to use the same handler to
restrict access, in the end the only difference is where the repo name
comes from, in case of WebSVN it's a query string parameter. mod_perl
provides anything I need, so I simply used CGI to parse all the
parameters and choosed the one I'm interested in:

> my $request = $self->_getRequest();
> my $reqArgs = $request->args();
[...]
> my $retVal = CGI->new($reqArgs)->param('repname');

That's the problem... I don't know what, but CGI didn't just parse
the given parameters and instead did something with the entire request
in a way that svn couldn't read its svndiff data anymore. But only in
the write-through-proxy-scenario, not if I committed locally. After
replacing CGI->new() with some other solution to properly parse the
parameters the commit through the proxy worked. One important part is
to not use some lib again which itself is just a wrapper around using
CGI->new(), CGI::Util::unescape e.g. works.

That was a bad one...
Reply all
Reply to author
Forward
0 new messages