authorization blocks OPTIONS
If a client sends a OPTIONS method for a resource that is under authorization, then mod_auth blocks the other modules from inserting their options since it breaks the calling chain. To make matters worse, the lighttpd core sends a 200 for all OPTIONS requests.
One case where this fails miserably is webdav, the Windows Web Folders client and the davfs2 (neon based) filesystem checks for DAV compliance with OPTIONS before allowing a server. Since mod_auth blocks mod_webdav from inserting it's options and the reply is a 200 (so that the client does not know that it has to send it's credentials) the connection is refused by the client.
I have included a small patch which changes this last behaviour into replying with 401 if authorization is required. I have tested this against both neon and the Windows Web Folders Client and they both work properly now.
Debate is whether this is the correct fix or not. One other fix would be to let mod_auth skip it's checks if HTTP_METHOD_OPTIONS but then I cannot find support in the RFCs for such behaviour so I think that my patch is the correct one :)
r2091@chromobil: stefan | 2008-02-26 17:06:03 +0100
Fix #1324: req-method OPTIONS: do not insert default response if request was denied
- Request is handled as denied if status != 0 && status != 200
git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@2086 152afb58-edef-0310-8abb-c4023f1b3aa9
Also available in: Atom