Ticket #631 (assigned defect)

Opened 2 years ago

Last modified 2 months ago

PROPFIND status code not propogated in proxy

Reported by: timpub@pobox.com Assigned to: jan (accepted)
Priority: high Milestone:
Component: mod_proxy Version: 1.4.19
Severity: major Keywords: svn propfind webdav status
Cc: Blocking:
Need Feedback: 1

Description

I have lighttpd 1.4.11 proxying to Apache 2.0.51 for Subversion. I followed the directions here: https://trac.lighttpd.net/trac/wiki/ApacheSubversionRecipe

Browsing, checkouts, and commiting modifications all work. Adding files does not. It appears that when the PROPFIND request hits Apache it returns 404 (makes sense, the file isn't there yet), but lighttpd returns 200 to the client (I'm guessing that the client becomes confused, expecting a 404 for a file it has yet to add). All other WebDAV/DeltaV requests seem to return the correct httpd status code. Here are some transcripts from the logs. The problem is the last PROPFIND (second to last line).


lighttpd log

192.168.1.1 example.com - [01/May/2006:21:05:46 -0700] "OPTIONS /svn/tools HTTP/1.1" 200 183 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
192.168.1.1 example.com - [01/May/2006:21:05:46 -0700] "MKACTIVITY /svn/!svn/act/92a71b49-c612-0410-8646-92b125d912e5 HTTP/1.1" 201 303 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
192.168.1.1 example.com - [01/May/2006:21:05:46 -0700] "PROPFIND /svn/tools HTTP/1.1" 207 428 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
192.168.1.1 example.com - [01/May/2006:21:05:46 -0700] "PROPFIND /svn/!svn/vcc/default HTTP/1.1" 207 389 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
192.168.1.1 example.com - [01/May/2006:21:05:46 -0700] "CHECKOUT /svn/!svn/bln/71 HTTP/1.1" 201 318 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
192.168.1.1 example.com - [01/May/2006:21:05:46 -0700] "PROPPATCH /svn/!svn/wbl/92a71b49-c612-0410-8646-92b125d912e5/71 HTTP/1.1" 207 349 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
192.168.1.1 example.com - [01/May/2006:21:05:46 -0700] "PROPFIND /svn/tools HTTP/1.1" 207 385 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
192.168.1.1 example.com - [01/May/2006:21:05:46 -0700] "CHECKOUT /svn/!svn/ver/25/tools HTTP/1.1" 201 321 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
192.168.1.1 example.com - [01/May/2006:21:05:46 -0700] "PROPFIND /svn/tools/test.txt HTTP/1.1" 200 295 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
192.168.1.1 example.com - [01/May/2006:21:05:47 -0700] "DELETE /svn/!svn/act/92a71b49-c612-0410-8646-92b125d912e5 HTTP/1.1" 204 0 "-" "SVN/1.3.0 (r17949) neon/0.25.4"

Notice that the last PROPFIND has a status of 200.


apache log

127.0.0.1 - tim [01/May/2006:21:05:46 -0700] "OPTIONS /svn/tools HTTP/1.0" 200 183 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
127.0.0.1 - tim [01/May/2006:21:05:46 -0700] "MKACTIVITY /svn/!svn/act/92a71b49-c612-0410-8646-92b125d912e5 HTTP/1.0" 201 303 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
127.0.0.1 - tim [01/May/2006:21:05:46 -0700] "PROPFIND /svn/tools HTTP/1.0" 207 428 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
127.0.0.1 - tim [01/May/2006:21:05:46 -0700] "PROPFIND /svn/!svn/vcc/default HTTP/1.0" 207 389 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
127.0.0.1 - tim [01/May/2006:21:05:46 -0700] "CHECKOUT /svn/!svn/bln/71 HTTP/1.0" 201 318 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
127.0.0.1 - tim [01/May/2006:21:05:46 -0700] "PROPPATCH /svn/!svn/wbl/92a71b49-c612-0410-8646-92b125d912e5/71 HTTP/1.0" 207 349 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
127.0.0.1 - tim [01/May/2006:21:05:46 -0700] "PROPFIND /svn/tools HTTP/1.0" 207 385 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
127.0.0.1 - tim [01/May/2006:21:05:46 -0700] "CHECKOUT /svn/!svn/ver/25/tools HTTP/1.0" 201 321 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
127.0.0.1 - tim [01/May/2006:21:05:46 -0700] "PROPFIND /svn/tools/test.txt HTTP/1.0" 404 295 "-" "SVN/1.3.0 (r17949) neon/0.25.4"
127.0.0.1 - tim [01/May/2006:21:05:47 -0700] "DELETE /svn/!svn/act/92a71b49-c612-0410-8646-92b125d912e5 HTTP/1.0" 204 - "-" "SVN/1.3.0 (r17949) neon/0.25.4"

Notice that the last PROPFIND has a status of 404.

Attachments

lighttpd.trace (55.1 kB) - added by Lukas <lukas@einfachkaffee.de> on 04/10/2007 10:50:21 PM.
strace of lighttpd while doing an "svn ci" after adding a file to the repository.

Change History

10/19/2006 11:41:09 PM changed by bmitchell@rgj.com

I am also experiencing this issue. I have verified that the issue exists on lighttpd 1.4.11 through 1.4.13.

(in reply to: ↑ description ) 03/21/2007 07:15:37 PM changed by anonymous

I have the same problem, any updates?

03/26/2007 07:48:37 PM changed by anonymous

It works now with 1.4.13-r1 on Gentoo (I was running 1.4.11).

04/10/2007 09:21:42 PM changed by lukas@einfachkaffee.de

The same problem here - debian etch, lighttpd v 1.4.13-4, which is 1.4.13 with a few modifications to the init.d-file and default configs. Any news on this? If gentoo has a working patch, where can I find it?

04/10/2007 10:00:21 PM changed by jan

  • status changed from new to assigned.
  • blocking changed.

Can someone please attach a strace which shows the issue in lighttpd ? See the wiki on how to report a bug.

04/10/2007 10:50:21 PM changed by Lukas <lukas@einfachkaffee.de>

  • attachment lighttpd.trace added.

strace of lighttpd while doing an "svn ci" after adding a file to the repository.

04/10/2007 11:03:45 PM changed by Lukas <lukas@einfachkaffee.de>

See lines 296 and 302 in the trace. lighttpd reads "HTTP/1.1 404 ...", but sends "HTTP/1.1 200 OK...", and encapsulates the 404 html-document into that ...

Hope this helps.

04/16/2007 11:08:19 AM changed by lukas@einfachkaffee.de

Any news on this front? Anything I can do about it? If it works now in Gentoo, I'd really like to see that patch, but I don't have gentoo here and can't seem to find 1.4.13-r1 ...

04/16/2007 12:22:24 PM changed by darix

there is no mod_proxy related patch in gentoo. so i would really wonder what is not working for you. and a friend of mine successfully proxies svn through lighttpd.

04/16/2007 12:25:46 PM changed by lukas@einfachkaffee.de

I do proxy svn, and it works. What's not working is adding new files to the repository. Please read the bugreport as it contains all information necessary to reproduce that bug ...

09/19/2007 11:50:57 AM changed by lukas at einfachkaffee de

  • version changed from 1.4.11 to 1.4.17.
  • severity changed from normal to major.
  • pending changed.

Just a note that this bug is still valid for lighttpd 1.4.17. If there's anything I can do about it, I'd be happy to help. Increased severity to major as this renders an 'svn add; svn ci' unfunctional.

10/26/2007 01:00:26 AM changed by me@markn.ca

Still valid in 1.4.18

12/08/2007 03:15:34 AM changed by dobesv@gmail.com

Just ran into this - what a pain! I guess I'll just have to open a port to apache instead. :(

03/01/2008 11:08:11 AM changed by stbuehler

2007-04-11 00:43:12: (connections.c.816) missing cleanup in scgi

This cleanup failure is triggered if the scgi module tried handling the request but another module handled it afterwards too. (So i bet you loaded mod_scgi before mod_proxy in your module list)

So i just think both mod_scgi and mod_proxy tried handling the request (which of course they should not, so it is a bug in lighty).
But you should be able to workaround it with disabling mod_scgi if you want mod_proxy.

03/01/2008 05:45:39 PM changed by Alex

I hesitated using Lighty for proxying svn requests to Apache because of this ticket; now I tried it anyways, and strangely, it works just fine (even adding files). For your information, I am using stock binaries from Debian Etch:

Lighttpd 1.4.13 Apache 2.2.3 Svn 1.4.2

Lighttpd is hosting Trac via mod_fastcgi.

Hope this helps.

(in reply to: ↑ description ) 03/27/2008 02:15:57 AM changed by georgexsh

  • priority changed from normal to high.
  • version changed from 1.4.17 to 1.4.18.
  • pending set to 1.

1.4.18 has the same problem. I am using ssl with lighttpd.

04/01/2008 01:20:05 PM changed by sdwarfs

  • version changed from 1.4.18 to 1.4.19.

I have the same problem here with Debian Etch binary package revision: 1.4.13-4etch6

Updated to the following version (Etch Backports): lighttpd-1.4.19 (ssl) - a light and fast webserver Build-Date: Mar 19 2008 23:49:19

But the problem still exists.

Problem seems to be:

* HTTP-Requests with Method "PROPFIND" are rejected/not correctly forwarded by lighttpd to apache.
* apache itself never receives the HTTP-Request (not even tcpdump could detect network traffic)

The Bug is either in mod_proxy or lighttpd's HTTP-Parser. Maybe the parser is hardcoded to accept only "GET" and "POST" and rejects all the others. But as I could find the requests log file of lighttpd, it seems to be a bug behind the HTTP-Parser inside the workflow...

Maybe it helps to know the active lighttpd modules:

 "mod_access"
 "mod_alias"
 "mod_accesslog"
 "mod_rewrite"
 "mod_auth"
 "mod_fastcgi"
 "mod_proxy"

Add/Change #631 (PROPFIND status code not propogated in proxy)




Change Properties