Apache: WebDAV hinter mod_proxy mit OS X 10.5.5 nutzen

Folgendes Szenario:
Apache (v2.2.8) mit mod_dav hinter einem weiteren Apache mit mod_proxy. Bisher klappte der Schreibzugriff problemlos. Mit Mac OS X 10.5.5 tritt aber nun das Problem auf, dass alle hochgeladenen Dateien 0 Byte haben.

Das Log des WebDAV Server sagte dazu nichts. Im Proxy allerdings tauchten folgende Zeilen auf:

[error] proxy: Chunked Transfer-Encoding is not supported
[error] [client 123.123.123.123] Handler for proxy-server returned invalid result code 22

Nach längerer Google Suche bin ich nun auf diese Seite gestoßen: http://www.atnan.com/2008/10/16/memory-issues-with-nsmutableurlrequest-s-sethttpbody-method-in-iphoneos-2-1. Auch wenn es da ums iPhone geht scheint das Problem das gleiche zu sein.

Große Dateien (Tritt aber auch schon bei 12k auf) werden auf sog. Chunks aufgeteilt. Dies wird im Header der http Pakete entsprechend gekennzeichnet. Anscheinend machen das die meisten Clients mit dem schlüsselwort “chunked”, Apple macht dies aber durch das Wort “Chunked”. (Man beachte die Groß-/Kleinschreibung). mod_proxy scheint im Gegensatz zu den meisten WebDAV Servern damit überfordert zu sein.

Die Lösung brachte nun die folgende Zeile in der Config des mod_proxy Hosts:

RequestHeader edit Transfer-Encoding Chunked chunked early

mod_proxy bekommt nun das Encoding als “chunked” und alles ist gut.