diff options
author | Julian Kalinowski <julian.kalinowski@dataport.de> | 2020-06-11 14:39:54 +0200 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2020-06-12 15:59:38 +0200 |
commit | 1d4bd2c6c71ff64423b69e79274f751683370674 (patch) | |
tree | 611d5237b972737462bc5b970b6ff640612e15ad | |
parent | 12a1c991935030c0d31f5b596244210d2f6d37f6 (diff) |
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 <mike.kaganski@collabora.com>
(cherry picked from commit af7e5983e53746acd3b453d38942950a7ab83c22)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96183
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
-rw-r--r-- | ucb/source/ucp/webdav-neon/NeonSession.cxx | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/ucb/source/ucp/webdav-neon/NeonSession.cxx b/ucb/source/ucp/webdav-neon/NeonSession.cxx index 704e20ce039c..7fac083451f6 100644 --- a/ucb/source/ucp/webdav-neon/NeonSession.cxx +++ b/ucb/source/ucp/webdav-neon/NeonSession.cxx @@ -1822,8 +1822,6 @@ void NeonSession::HandleError( int nError, const OUString & inPath, const DAVRequestEnvironment & rEnv ) { - m_aEnv = DAVRequestEnvironment(); - // Map error code to DAVException. switch ( nError ) { |