Catch forbidden http status code
If you try to do something on a DAV mount (external or federated share) that is not allowed. We should not mark the storage as not available but just fail somewhat gracefully. Now by catching this and just properly returning the operation will just fail (and notify the user) which is already a lot better then marking the storage as unavailable and doing boom. Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This commit is contained in:
parent
30bdb0f35b
commit
c08e803db3
|
@ -35,6 +35,7 @@ namespace OC\Files\Storage;
|
|||
|
||||
use Exception;
|
||||
use GuzzleHttp\Exception\RequestException;
|
||||
use OCP\Files\ForbiddenException;
|
||||
use OCP\ILogger;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Icewind\Streams\CallbackWrapper;
|
||||
|
@ -829,6 +830,7 @@ class DAV extends Common {
|
|||
* when the authentication expired or is invalid
|
||||
* @throws StorageNotAvailableException if the storage is not available,
|
||||
* which might be temporary
|
||||
* @throws ForbiddenException if the action is not allowed
|
||||
*/
|
||||
protected function convertException(Exception $e, $path = '') {
|
||||
\OC::$server->getLogger()->logException($e, ['app' => 'files_external', 'level' => ILogger::DEBUG]);
|
||||
|
@ -842,6 +844,9 @@ class DAV extends Common {
|
|||
} else if ($e->getHttpStatus() === Http::STATUS_METHOD_NOT_ALLOWED) {
|
||||
// ignore exception for MethodNotAllowed, false will be returned
|
||||
return;
|
||||
} else if ($e->getHttpStatus() === Http::STATUS_FORBIDDEN){
|
||||
// The operation is forbidden. Fail somewhat gracefully
|
||||
throw new ForbiddenException(get_class($e) . ':' . $e->getMessage());
|
||||
}
|
||||
throw new StorageNotAvailableException(get_class($e) . ': ' . $e->getMessage());
|
||||
} else if ($e instanceof ClientException) {
|
||||
|
|
Loading…
Reference in New Issue