From af7e5983e53746acd3b453d38942950a7ab83c22 Mon Sep 17 00:00:00 2001 From: Julian Kalinowski Date: Thu, 11 Jun 2020 14:39:54 +0200 Subject: tdf#133673 fix webdav lock refresh with Auth:Negotiate NeonSession::NeonAuth requires an AuthListener to be set in the RequestEnvironment (RE). After a HTTP 401, the Negotiate challenge should be handled. The whole RE however is reset in HandleError, which is called after every request. Usually, this is not a problem because the RE is re-set at the beginning of almost all requests (PUT, GET, PROPFIND, ...). But when refreshing locks this is not the case, as the LockStore does not know any RequestEnvironment. NeonSession::NeonAuth is then called in a post-send hook after a HTTP 401, the AuthListener is null and in consequence Neon's ah_post_send does not return NE_RETRY. So there will be no retry with the correct authorization header. This patch removes the reset of the RequestEnvironment in HandleError, thus keeping it in the session for further use. Change-Id: Ib1a5eff08072f9ef003e760c5f40d9ad26c6cad1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96191 Tested-by: Jenkins Reviewed-by: Mike Kaganski --- ucb/source/ucp/webdav-neon/NeonSession.cxx | 2 -- 1 file changed, 2 deletions(-) diff --git a/ucb/source/ucp/webdav-neon/NeonSession.cxx b/ucb/source/ucp/webdav-neon/NeonSession.cxx index 3a19e774b17a..4773514cd3fa 100644 --- a/ucb/source/ucp/webdav-neon/NeonSession.cxx +++ b/ucb/source/ucp/webdav-neon/NeonSession.cxx @@ -1823,8 +1823,6 @@ void NeonSession::HandleError( int nError, const OUString & inPath, const DAVRequestEnvironment & rEnv ) { - m_aEnv = DAVRequestEnvironment(); - // Map error code to DAVException. switch ( nError ) { -- cgit