aboutsummaryrefslogtreecommitdiffstats
path: root/apps/dav/lib
diff options
context:
space:
mode:
authorJoas Schilling <213943+nickvergessen@users.noreply.github.com>2024-05-06 08:16:18 +0200
committerGitHub <noreply@github.com>2024-05-06 08:16:18 +0200
commit137d4617cb153db81b541b1dc98c1f33b5cdcd30 (patch)
treedf7d055f7360f916d8be74e75c7a0fba078c454f /apps/dav/lib
parent48f3b9146ee03011b666309b708e0f5b075af3cd (diff)
parent368769aa5ac88922e35d482bf7d27da1c2425d94 (diff)
downloadnextcloud-server-137d4617cb153db81b541b1dc98c1f33b5cdcd30.tar.gz
nextcloud-server-137d4617cb153db81b541b1dc98c1f33b5cdcd30.zip
Merge pull request #45018 from nextcloud/backport/45001/stable29
[stable29] fix(DAV): Migrate known exceptions to Sabre exceptions when copying
Diffstat (limited to 'apps/dav/lib')
-rw-r--r--apps/dav/lib/Connector/Sabre/Directory.php30
1 files changed, 19 insertions, 11 deletions
diff --git a/apps/dav/lib/Connector/Sabre/Directory.php b/apps/dav/lib/Connector/Sabre/Directory.php
index e40b8d760eb..5bfc3e49e42 100644
--- a/apps/dav/lib/Connector/Sabre/Directory.php
+++ b/apps/dav/lib/Connector/Sabre/Directory.php
@@ -469,20 +469,28 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node implements \Sabre\DAV\ICol
public function copyInto($targetName, $sourcePath, INode $sourceNode) {
if ($sourceNode instanceof File || $sourceNode instanceof Directory) {
- $destinationPath = $this->getPath() . '/' . $targetName;
- $sourcePath = $sourceNode->getPath();
+ try {
+ $destinationPath = $this->getPath() . '/' . $targetName;
+ $sourcePath = $sourceNode->getPath();
- if (!$this->fileView->isCreatable($this->getPath())) {
- throw new \Sabre\DAV\Exception\Forbidden();
- }
+ if (!$this->fileView->isCreatable($this->getPath())) {
+ throw new \Sabre\DAV\Exception\Forbidden();
+ }
- try {
- $this->fileView->verifyPath($this->getPath(), $targetName);
- } catch (InvalidPathException $ex) {
- throw new InvalidPath($ex->getMessage());
- }
+ try {
+ $this->fileView->verifyPath($this->getPath(), $targetName);
+ } catch (InvalidPathException $ex) {
+ throw new InvalidPath($ex->getMessage());
+ }
- return $this->fileView->copy($sourcePath, $destinationPath);
+ return $this->fileView->copy($sourcePath, $destinationPath);
+ } catch (StorageNotAvailableException $e) {
+ throw new ServiceUnavailable($e->getMessage());
+ } catch (ForbiddenException $ex) {
+ throw new Forbidden($ex->getMessage(), $ex->getRetry());
+ } catch (LockedException $e) {
+ throw new FileLocked($e->getMessage(), $e->getCode(), $e);
+ }
}
return false;