* 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'])) {
$options['ranges'] = array();
$options['ranges'] = array();
}
$options["ranges"][] = $range;
@ -1637,7 +1637,7 @@ class HTTP_WebDAV_Server
// TODO multipart support is missing (see also above)
if (0 == fseek($stream, $options['ranges'][0]["start"], SEEK_SET)) {
$length = $options['ranges'][0]["end"] - $options['ranges'][0]["start"]+1;
while (!feof($options['stream'])) {
if ($length <= 0) {
break;
@ -1672,7 +1672,7 @@ class HTTP_WebDAV_Server
}
fclose($stream);
}
}
$this->http_status($stat);
} else {
@ -2490,7 +2490,8 @@ class HTTP_WebDAV_Server
{
// cadaver (and probably all neon using agents) need a more complete url encoding
// 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(
'%2F' => '/',