* WebDAV: fix for Netdrive to work correct with non-ascii chars like German umlauts

- unfortunatly Netdrive uses no User-Agent header, so we can only detect it on the absense of one
- we use now rawurlencode with replacing / and : afterwards, instead of the minimal version, which is the default
This commit is contained in:
Ralf Becker 2011-08-27 10:53:37 +00:00
parent 85d9e5e4ee
commit 59cc3578b8

View File

@ -1594,7 +1594,7 @@ class HTTP_WebDAV_Server
} }
if (!isset($options['ranges'])) { if (!isset($options['ranges'])) {
$options['ranges'] = array(); $options['ranges'] = array();
} }
$options["ranges"][] = $range; $options["ranges"][] = $range;
@ -1637,7 +1637,7 @@ class HTTP_WebDAV_Server
// TODO multipart support is missing (see also above) // TODO multipart support is missing (see also above)
if (0 == fseek($stream, $options['ranges'][0]["start"], SEEK_SET)) { if (0 == fseek($stream, $options['ranges'][0]["start"], SEEK_SET)) {
$length = $options['ranges'][0]["end"] - $options['ranges'][0]["start"]+1; $length = $options['ranges'][0]["end"] - $options['ranges'][0]["start"]+1;
while (!feof($options['stream'])) { while (!feof($options['stream'])) {
if ($length <= 0) { if ($length <= 0) {
break; break;
@ -1672,7 +1672,7 @@ class HTTP_WebDAV_Server
} }
fclose($stream); fclose($stream);
} }
$this->http_status($stat); $this->http_status($stat);
} else { } else {
@ -2490,7 +2490,8 @@ class HTTP_WebDAV_Server
{ {
// cadaver (and probably all neon using agents) need a more complete url encoding // cadaver (and probably all neon using agents) need a more complete url encoding
// otherwise special chars like "$,()'" in filenames do NOT work // otherwise special chars like "$,()'" in filenames do NOT work
if (strpos($_SERVER['HTTP_USER_AGENT'],'neon') !== false) // netdrive does NOT use a User-Agent, but requires full urlencoding for non-ascii chars (eg. German Umlauts)
if (strpos($_SERVER['HTTP_USER_AGENT'],'neon') !== false || !isset($_SERVER['HTTP_USER_AGENT']))
{ {
return strtr(rawurlencode($url),array( return strtr(rawurlencode($url),array(
'%2F' => '/', '%2F' => '/',