From: <ral...@us...> - 2011-07-29 11:07:36
|
Author: ralfbecker Date: Fri Jul 29 13:07:29 2011 New Revision: 35842 URL: http://svn.stylite.de/viewvc/egroupware?rev=35842&view=rev Log: HTTP_WebDAV_Server 1.0.0RC6 changes: - WebDAV has no concept of a query string and clients (including cadaver) seem to pass "?" unencoded, so we need to extract the path info out of the request URI ourselves - this together with using rawurlencode() instead of urlencode() Modified: trunk/egw-pear/HTTP/WebDAV/Server.php Modified: trunk/egw-pear/HTTP/WebDAV/Server.php URL: http://svn.stylite.de/viewvc/egroupware/trunk/egw-pear/HTTP/WebDAV/Server.php?rev=35842&r1=35841&r2=35842&view=diff ============================================================================== --- trunk/egw-pear/HTTP/WebDAV/Server.php (original) +++ trunk/egw-pear/HTTP/WebDAV/Server.php Fri Jul 29 13:07:29 2011 @@ -196,7 +196,15 @@ $uri = substr($uri,0,-strlen($this->_SERVER["PATH_INFO"])); } - $path_info = empty($this->_SERVER["PATH_INFO"]) ? "/" : $this->_SERVER["PATH_INFO"]; + // WebDAV has no concept of a query string and clients (including cadaver) + // seem to pass '?' unencoded, so we need to extract the path info out + // of the request URI ourselves + $path_info = substr($this->_SERVER["REQUEST_URI"], strlen($this->_SERVER["SCRIPT_NAME"])); + + // just in case the path came in empty ... + if (empty($path_info)) { + $path_info = "/"; + } $this->base_uri = $uri; $this->uri = $uri . $path_info; @@ -560,7 +568,7 @@ * OPTIONS method handler * * The OPTIONS method handler creates a valid OPTIONS reply - * including Dav: and Allowed: heaers + * including Dav: and Allowed: headers * based on the implemented methods found in the actual instance * * @param void @@ -1945,8 +1953,8 @@ $http_header_host = preg_replace("/:80$/", "", $this->_SERVER["HTTP_HOST"]); - $url = parse_url($this->_SERVER["HTTP_DESTINATION"]); - $path = urldecode($url["path"]); + $url = parse_url($this->_SERVER["HTTP_DESTINATION"]); + $path = urldecode($url["path"]); if (isset($url["host"])) { // TODO check url scheme, too @@ -2491,7 +2499,7 @@ */ function _urldecode($path) { - return urldecode($path); + return rawurldecode($path); } /** |