]> source.dussan.org Git - nextcloud-server.git/commitdiff
improve handling of out of space errors for smb 22928/head
authorRobin Appelman <robin@icewind.nl>
Thu, 17 Sep 2020 15:23:33 +0000 (17:23 +0200)
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>
Thu, 17 Sep 2020 18:47:33 +0000 (18:47 +0000)
Signed-off-by: Robin Appelman <robin@icewind.nl>
apps/files_external/lib/Lib/Storage/SMB.php

index 404aa4e12deaaca2f41a026a06b66f11f93176f3..c7e2583f08dd24673c26bc75709e0337b12733ca 100644 (file)
@@ -44,6 +44,7 @@ use Icewind\SMB\Exception\Exception;
 use Icewind\SMB\Exception\ForbiddenException;
 use Icewind\SMB\Exception\InvalidArgumentException;
 use Icewind\SMB\Exception\NotFoundException;
+use Icewind\SMB\Exception\OutOfSpaceException;
 use Icewind\SMB\Exception\TimedOutException;
 use Icewind\SMB\IFileInfo;
 use Icewind\SMB\Native\NativeServer;
@@ -57,6 +58,7 @@ use OC\Files\Filesystem;
 use OC\Files\Storage\Common;
 use OCA\Files_External\Lib\Notify\SMBNotifyHandler;
 use OCP\Constants;
+use OCP\Files\EntityTooLargeException;
 use OCP\Files\Notify\IChange;
 use OCP\Files\Notify\IRenameChange;
 use OCP\Files\Storage\INotifyStorage;
@@ -497,6 +499,8 @@ class SMB extends Common implements INotifyStorage {
                        return false;
                } catch (ForbiddenException $e) {
                        return false;
+               } catch (OutOfSpaceException $e) {
+                       throw new EntityTooLargeException("not enough available space to create file", 0, $e);
                } catch (ConnectException $e) {
                        $this->logger->logException($e, ['message' => 'Error while opening file']);
                        throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e);
@@ -538,6 +542,8 @@ class SMB extends Common implements INotifyStorage {
                                return true;
                        }
                        return false;
+               } catch (OutOfSpaceException $e) {
+                       throw new EntityTooLargeException("not enough available space to create file", 0, $e);
                } catch (ConnectException $e) {
                        $this->logger->logException($e, ['message' => 'Error while creating file']);
                        throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e);