summaryrefslogtreecommitdiffstats
path: root/lib/private/files/storage/dav.php
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2015-07-01 13:17:29 +0200
committerVincent Petry <pvince81@owncloud.com>2015-07-03 07:51:13 +0200
commit34043d4647a2602ec7f3b9da0be104986559b0fb (patch)
tree71daedd9068642560720739a2d8aa70e3aed22a5 /lib/private/files/storage/dav.php
parentfd8f6a18fd527793f836f9be57c10626f741a37d (diff)
downloadnextcloud-server-34043d4647a2602ec7f3b9da0be104986559b0fb.tar.gz
nextcloud-server-34043d4647a2602ec7f3b9da0be104986559b0fb.zip
Throw lock exceptions if remote share returned 423 status code
Diffstat (limited to 'lib/private/files/storage/dav.php')
-rw-r--r--lib/private/files/storage/dav.php44
1 files changed, 27 insertions, 17 deletions
diff --git a/lib/private/files/storage/dav.php b/lib/private/files/storage/dav.php
index d67e6b9f97e..b849c372d70 100644
--- a/lib/private/files/storage/dav.php
+++ b/lib/private/files/storage/dav.php
@@ -219,9 +219,9 @@ class DAV extends Common {
$this->statCache->set($path, false);
return false;
}
- $this->convertException($e);
+ $this->convertException($e, $path);
} catch (\Exception $e) {
- $this->convertException($e);
+ $this->convertException($e, $path);
}
return false;
}
@@ -286,9 +286,9 @@ class DAV extends Common {
if ($e->getHttpStatus() === 404) {
return false;
}
- $this->convertException($e);
+ $this->convertException($e, $path);
} catch (\Exception $e) {
- $this->convertException($e);
+ $this->convertException($e, $path);
}
return false;
}
@@ -311,9 +311,9 @@ class DAV extends Common {
if ($e->getHttpStatus() === 404) {
return false;
}
- $this->convertException($e);
+ $this->convertException($e, $path);
} catch (\Exception $e) {
- $this->convertException($e);
+ $this->convertException($e, $path);
}
return false;
}
@@ -363,6 +363,9 @@ class DAV extends Common {
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($statusCode !== 200) {
Util::writeLog("webdav client", 'curl GET ' . curl_getinfo($curl, CURLINFO_EFFECTIVE_URL) . ' returned status code ' . $statusCode, Util::ERROR);
+ if ($statusCode === 423) {
+ throw new \OCP\Lock\LockedException($path);
+ }
}
curl_close($curl);
rewind($fp);
@@ -446,10 +449,10 @@ class DAV extends Common {
if ($e->getHttpStatus() === 501) {
return false;
}
- $this->convertException($e);
+ $this->convertException($e, $path);
return false;
} catch (\Exception $e) {
- $this->convertException($e);
+ $this->convertException($e, $path);
return false;
}
} else {
@@ -502,6 +505,9 @@ class DAV extends Common {
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($statusCode !== 200) {
Util::writeLog("webdav client", 'curl GET ' . curl_getinfo($curl, CURLINFO_EFFECTIVE_URL) . ' returned status code ' . $statusCode, Util::ERROR);
+ if ($statusCode === 423) {
+ throw new \OCP\Lock\LockedException($path);
+ }
}
curl_close($curl);
fclose($source);
@@ -564,9 +570,9 @@ class DAV extends Common {
if ($e->getHttpStatus() === 404) {
return array();
}
- $this->convertException($e);
+ $this->convertException($e, $path);
} catch (\Exception $e) {
- $this->convertException($e);
+ $this->convertException($e, $path);
}
return array();
}
@@ -591,9 +597,9 @@ class DAV extends Common {
if ($e->getHttpStatus() === 404) {
return false;
}
- $this->convertException($e);
+ $this->convertException($e, $path);
} catch (\Exception $e) {
- $this->convertException($e);
+ $this->convertException($e, $path);
}
return false;
}
@@ -643,9 +649,9 @@ class DAV extends Common {
return false;
}
- $this->convertException($e);
+ $this->convertException($e, $path);
} catch (\Exception $e) {
- $this->convertException($e);
+ $this->convertException($e, $path);
}
return false;
}
@@ -763,10 +769,10 @@ class DAV extends Common {
if ($e->getHttpStatus() === 404) {
return false;
}
- $this->convertException($e);
+ $this->convertException($e, $path);
return false;
} catch (\Exception $e) {
- $this->convertException($e);
+ $this->convertException($e, $path);
return false;
}
}
@@ -778,15 +784,19 @@ class DAV extends Common {
* or do nothing.
*
* @param Exception $e sabre exception
+ * @param string $path optional path from the operation
*
* @throws StorageInvalidException if the storage is invalid, for example
* when the authentication expired or is invalid
* @throws StorageNotAvailableException if the storage is not available,
* which might be temporary
*/
- private function convertException(Exception $e) {
+ private function convertException(Exception $e, $path = '') {
Util::writeLog('files_external', $e->getMessage(), Util::ERROR);
if ($e instanceof ClientHttpException) {
+ if ($e->getHttpStatus() === 423) {
+ throw new \OCP\Lock\LockedException($path);
+ }
if ($e->getHttpStatus() === 401) {
// either password was changed or was invalid all along
throw new StorageInvalidException(get_class($e).': '.$e->getMessage());