From ff1328a695f86ff4833113e86276722dd29a96a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Mon, 15 Jun 2020 10:25:27 +0200 Subject: Perform file conflict check earlier so that it also triggers when not saving MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- lib/Service/DocumentService.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/Service/DocumentService.php b/lib/Service/DocumentService.php index 467dc4c80..73eb53688 100644 --- a/lib/Service/DocumentService.php +++ b/lib/Service/DocumentService.php @@ -293,6 +293,15 @@ class DocumentService { $savedEtag = $file->getEtag(); $lastMTime = $document->getLastSavedVersionTime(); + if ($lastMTime > 0 && $savedEtag !== $document->getLastSavedVersionEtag() && $force === false) { + if (!$this->cache->get('document-save-lock-' . $documentId)) { + throw new DocumentSaveConflictException('File changed in the meantime from outside'); + } else { + // Only return here if the document is locked, otherwise we can continue to save + return $document; + } + } + if ($autoaveDocument === null) { return $document; } @@ -305,13 +314,6 @@ class DocumentService { if ($file->getMTime() === $lastMTime && $lastMTime > time() - self::AUTOSAVE_MINIMUM_DELAY && $manualSave === false) { return $document; } - if ($lastMTime > 0 && $savedEtag !== $document->getLastSavedVersionEtag() && $force === false) { - if (!$this->cache->get('document-save-lock-' . $documentId)) { - throw new DocumentSaveConflictException('File changed in the meantime from outside'); - } else { - return $document; - } - } $this->cache->set('document-save-lock-' . $documentId, true, 10); try { $file->putContent($autoaveDocument); -- cgit v1.2.3