summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamás Zolnai <tamas.zolnai@collabora.com>2019-04-28 15:21:39 +0200
committerAndras Timar <andras.timar@collabora.com>2019-05-03 15:31:13 +0200
commit4eaff1246710443a0a6870f547ba8fdc1c71341a (patch)
tree88fd8a7c7e8974bbd79a78915f885ea61037ae7e
parent0033e485d486349cc069e35a1c9a31b3006e1741 (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.cxx14
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();