ucb/source/ucp/webdav-curl/webdavcontent.cxx |   12 ++++++++++++
 1 file changed, 12 insertions(+)

New commits:
commit c155b4137678455294db605e0332b097ef51dc1a
Author:     Giuseppe Castagno <[email protected]>
AuthorDate: Mon Jan 11 11:11:19 2016 +0100
Commit:     Michael Stahl <[email protected]>
CommitDate: Mon Nov 1 18:38:36 2021 +0100

    ucb: webdav-curl: tdf#101094 (14) OPTIONS: Options cache removal: PUT
    
    [ port of commit e0eb85785b68867f1476553723dbfc6dc407106b ]
    
    Change-Id: I2c4109b44ba291fdc01289b2706f746512d7e3e6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123466
    Tested-by: Michael Stahl <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/ucb/source/ucp/webdav-curl/webdavcontent.cxx 
b/ucb/source/ucp/webdav-curl/webdavcontent.cxx
index fdec5e34b4bc..cc7578a2ca49 100644
--- a/ucb/source/ucp/webdav-curl/webdavcontent.cxx
+++ b/ucb/source/ucp/webdav-curl/webdavcontent.cxx
@@ -2434,6 +2434,8 @@ void Content::insert(
 
         aURL += aEscapedTitle;
 
+        // save the URL to clean cache
+        OUString    aTargetUrl = aURL;
         try
         {
             xResAccess->setURL( aURL );
@@ -2443,6 +2445,9 @@ void Content::insert(
             else
             {
                 xResAccess->PUT( xInputStream, Environment );
+                // remove options from cache, PUT may change it
+                // it will be refreshed when needed
+                aStaticDAVOptionsCache.removeDAVOptions( aTargetUrl );
             }
             // no error , set the resourcetype to unknown type
             // the resource may have transitioned from NOT FOUND or UNKNOWN to 
something else
@@ -2453,6 +2458,7 @@ void Content::insert(
         }
         catch ( DAVException const & except )
         {
+            aStaticDAVOptionsCache.removeDAVOptions( aTargetUrl );
             if ( bCollection )
             {
                 if ( except.getStatus() == SC_METHOD_NOT_ALLOWED )
@@ -2541,12 +2547,18 @@ void Content::insert(
             // Unreachable
         }
 
+        // save the URL since it may change due to redirection
+        OUString    aTargetUrl = xResAccess->getURL();
         try
         {
             xResAccess->PUT( xInputStream, Environment );
+            // remove options from cache, PUT may change it
+            // it will be refreshed when needed
+            aStaticDAVOptionsCache.removeDAVOptions( aTargetUrl );
         }
         catch ( DAVException const & e )
         {
+            aStaticDAVOptionsCache.removeDAVOptions( aTargetUrl );
             cancelCommandExecution( e, Environment, true );
             // Unreachable
         }

Reply via email to