diff options
author | Tamás Zolnai <tamas.zolnai@collabora.com> | 2019-04-28 15:21:39 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2019-05-03 15:31:13 +0200 |
commit | 4eaff1246710443a0a6870f547ba8fdc1c71341a (patch) | |
tree | 88fd8a7c7e8974bbd79a78915f885ea61037ae7e | |
parent | 0033e485d486349cc069e35a1c9a31b3006e1741 (diff) |
WebDav: Don't unlock the file during saving of a document
Otherwise it can happen that the file is locked by someone
else during the saving method is running.
I just extended the scope of the existing DisableUnlockWebDAV()
calls a bit. In case of webdav it does not cause an issue to
avoid unlocking the file before locking it again with an other
SfxMedium.
Change-Id: I6ac4e3326c63c9e184a7710ce8994cac1ed79449
Reviewed-on: https://gerrit.libreoffice.org/71484
Tested-by: Jenkins
Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com>
(cherry picked from commit fdab153636ad7e3ce4b09836a63d2fa11b42e728)
Reviewed-on: https://gerrit.libreoffice.org/71512
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Tested-by: Andras Timar <andras.timar@collabora.com>
-rw-r--r-- | sfx2/source/doc/objstor.cxx | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx index c776ff944957..1b04019c95c3 100644 --- a/sfx2/source/doc/objstor.cxx +++ b/sfx2/source/doc/objstor.cxx @@ -1200,6 +1200,10 @@ bool SfxObjectShell::SaveTo_Impl && !rMedium.GetName().equalsIgnoreAsciiCase("private:stream") && ::utl::UCBContentHelper::EqualURLs( pMedium->GetName(), rMedium.GetName() ) ) { + // Do not unlock the file during saving. + // need to modify this for WebDAV if this method is called outside of + // the process of saving a file + pMedium->DisableUnlockWebDAV(); bStoreToSameLocation = true; if ( pMedium->DocNeedsFileDateCheck() ) @@ -1298,6 +1302,7 @@ bool SfxObjectShell::SaveTo_Impl } } } + pMedium->DisableUnlockWebDAV(false); } else { @@ -1718,10 +1723,6 @@ bool SfxObjectShell::SaveTo_Impl return bOk; } - -// This method contains a call to disable the UNLOCK of a WebDAV resource, that work while saving a file. -// If the method is called from another process (e.g. not when saving a file), -// that disabling needs tweaking bool SfxObjectShell::DisconnectStorage_Impl( SfxMedium& rSrcMedium, SfxMedium& rTargetMedium ) { // this method disconnects the storage from source medium, and attaches it to the backup created by the target medium @@ -1742,12 +1743,7 @@ bool SfxObjectShell::DisconnectStorage_Impl( SfxMedium& rSrcMedium, SfxMedium& r rTargetMedium.ResetError(); xOptStorage->writeAndAttachToStream( uno::Reference< io::XStream >() ); rSrcMedium.CanDisposeStorage_Impl( false ); - // need to modify this for WebDAV if this method is called outside - // the process of saving a file - rSrcMedium.DisableUnlockWebDAV(); rSrcMedium.Close(); - // see comment on the previous third row - rSrcMedium.DisableUnlockWebDAV( false ); // now try to create the backup rTargetMedium.GetBackup_Impl(); |