tdf#83531 Opening WebDAV URL WebDav fails if write is restricted
Happened because LOCK method was not allowed without credentials. Change-Id: I7b204e67079791a08211410ced4b0b4f015d524a Reviewed-on: https://gerrit.libreoffice.org/17856 Reviewed-by: Jan Holesovsky <kendy@collabora.com> Tested-by: Jan Holesovsky <kendy@collabora.com>
This commit is contained in:
committed by
Jan Holesovsky
parent
b4576f3da4
commit
0326352470
@@ -42,6 +42,7 @@
|
||||
#include <com/sun/star/ucb/CommandFailedException.hpp>
|
||||
#include <com/sun/star/ucb/CommandAbortedException.hpp>
|
||||
#include <com/sun/star/ucb/InteractiveLockingLockedException.hpp>
|
||||
#include <com/sun/star/ucb/InteractiveNetworkWriteException.hpp>
|
||||
#include <com/sun/star/ucb/Lock.hpp>
|
||||
#include <com/sun/star/ucb/XCommandEnvironment.hpp>
|
||||
#include <com/sun/star/ucb/XContentIdentifierFactory.hpp>
|
||||
@@ -1010,6 +1011,19 @@ void SfxMedium::LockOrigFileOnDemand( bool bLoading, bool bNoUI )
|
||||
bUIStatus = ShowLockedDocumentDialog( aLockData, bLoading, false );
|
||||
}
|
||||
}
|
||||
catch( ucb::InteractiveNetworkWriteException& )
|
||||
{
|
||||
// This catch it's not really needed, here just for the sake of documentation on the behaviour.
|
||||
// This is the most likely reason:
|
||||
// - the remote site is a WebDAV with special configuration: read/only for read operations
|
||||
// and read/write for write operations, the user is not allowed to lock/write and
|
||||
// she cancelled the credentials request.
|
||||
// this is not actually an error, but the exception is sent directly from ucb, avoiding the automatic
|
||||
// management that takes part in cancelCommandExecution()
|
||||
// Unfortunately there is no InteractiveNetwork*Exception available to signal this more correctly
|
||||
// since it mostly happens on read/only part of webdav, this can be the most correct
|
||||
// exception available
|
||||
}
|
||||
catch( uno::Exception& )
|
||||
{}
|
||||
}
|
||||
|
@@ -2990,6 +2990,28 @@ void Content::lock(
|
||||
false );
|
||||
}
|
||||
break;
|
||||
case DAVException::DAV_HTTP_AUTH:
|
||||
{
|
||||
SAL_WARN( "ucb.ucp.webdav", "lock: DAVException Authentication error - URL: <"
|
||||
<< m_xIdentifier->getContentIdentifier() << ">" );
|
||||
// this could mean:
|
||||
// - interaction handler for credential management not present (happens, depending
|
||||
// on the LO framework processing)
|
||||
// - the remote site is a WebDAV with special configuration: read/only for read operations
|
||||
// and read/write for write operations, the user is not allowed to lock/write and
|
||||
// she cancelled the credentials request.
|
||||
// this is not actually an error, but the exception is sent directly from here, avoiding the automatic
|
||||
// management that takes part in cancelCommandExecution() below
|
||||
// Unfortunately there is no InteractiveNetwork*Exception available to signal this
|
||||
// since it mostly happens on read/only part of webdav, this appears to be the most correct exception available
|
||||
throw
|
||||
ucb::InteractiveNetworkWriteException(
|
||||
OUString( "Authentication error while tring to lock! Write only WebDAV perhaps?" ),
|
||||
static_cast< cppu::OWeakObject * >( this ),
|
||||
task::InteractionClassification_ERROR,
|
||||
e.getData() );
|
||||
}
|
||||
break;
|
||||
case DAVException::DAV_HTTP_ERROR:
|
||||
//grab the error code
|
||||
switch( e.getStatus() )
|
||||
|
Reference in New Issue
Block a user