[Libreoffice-commits] core.git: 2 commits - ucb/source
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Mon Sep 10 16:20:21 UTC 2018
ucb/source/ucp/webdav-neon/NeonHeadRequest.cxx | 2 -
ucb/source/ucp/webdav-neon/NeonPropFindRequest.cxx | 6 +--
ucb/source/ucp/webdav-neon/NeonSession.cxx | 41 +++++++++++++--------
ucb/source/ucp/webdav-neon/NeonSession.hxx | 4 +-
4 files changed, 33 insertions(+), 20 deletions(-)
New commits:
commit b4ccfe7333345a4338240cbd013170ba4751b3a7
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Mon Sep 10 13:18:39 2018 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Mon Sep 10 18:20:11 2018 +0200
wrap GlobalNeonMutex as local static
Change-Id: I8d879877c93ce4d3a8f52fc707f94f2f095227d6
Reviewed-on: https://gerrit.libreoffice.org/60262
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/ucb/source/ucp/webdav-neon/NeonHeadRequest.cxx b/ucb/source/ucp/webdav-neon/NeonHeadRequest.cxx
index 89c8c9175d35..824622ec9746 100644
--- a/ucb/source/ucp/webdav-neon/NeonHeadRequest.cxx
+++ b/ucb/source/ucp/webdav-neon/NeonHeadRequest.cxx
@@ -133,7 +133,7 @@ NeonHeadRequest::NeonHeadRequest( HttpSession * inSession,
RTL_TEXTENCODING_UTF8 ).getStr() );
{
- osl::Guard< osl::Mutex > theGlobalGuard( aGlobalNeonMutex );
+ osl::Guard< osl::Mutex > theGlobalGuard(getGlobalNeonMutex());
nError = ne_request_dispatch( req );
}
diff --git a/ucb/source/ucp/webdav-neon/NeonPropFindRequest.cxx b/ucb/source/ucp/webdav-neon/NeonPropFindRequest.cxx
index c22aee8727ab..3e25121d28fa 100644
--- a/ucb/source/ucp/webdav-neon/NeonPropFindRequest.cxx
+++ b/ucb/source/ucp/webdav-neon/NeonPropFindRequest.cxx
@@ -261,7 +261,7 @@ NeonPropFindRequest::NeonPropFindRequest( HttpSession* inSession,
thePropNames[ theIndex ].name = nullptr;
{
- osl::Guard< osl::Mutex > theGlobalGuard( aGlobalNeonMutex );
+ osl::Guard< osl::Mutex > theGlobalGuard(getGlobalNeonMutex());
nError = ne_simple_propfind( inSession,
inPath,
inDepth,
@@ -276,7 +276,7 @@ NeonPropFindRequest::NeonPropFindRequest( HttpSession* inSession,
else
{
// ALLPROP
- osl::Guard< osl::Mutex > theGlobalGuard( aGlobalNeonMutex );
+ osl::Guard< osl::Mutex > theGlobalGuard(getGlobalNeonMutex());
nError = ne_simple_propfind( inSession,
inPath,
inDepth,
@@ -298,7 +298,7 @@ NeonPropFindRequest::NeonPropFindRequest(
int & nError )
{
{
- osl::Guard< osl::Mutex > theGlobalGuard( aGlobalNeonMutex );
+ osl::Guard< osl::Mutex > theGlobalGuard(getGlobalNeonMutex());
nError = ne_propnames( inSession,
inPath,
inDepth,
diff --git a/ucb/source/ucp/webdav-neon/NeonSession.cxx b/ucb/source/ucp/webdav-neon/NeonSession.cxx
index 38ff0ec7925f..8d5f0c20d509 100644
--- a/ucb/source/ucp/webdav-neon/NeonSession.cxx
+++ b/ucb/source/ucp/webdav-neon/NeonSession.cxx
@@ -604,15 +604,22 @@ void NeonSession::PreSendRequest(ne_request* req, ne_buffer* headers)
}
}
-
-// static members
-bool NeonSession::m_bGlobalsInited = false;
//See https://bugzilla.redhat.com/show_bug.cgi?id=544619#c4
//neon is threadsafe, but uses gnutls which is only thread-safe
//if initialized to be thread-safe. cups, unfortunately, generally
//initializes it first, and as non-thread-safe, leaving the entire
//stack unsafe
-osl::Mutex aGlobalNeonMutex;
+namespace webdav_ucp
+{
+ osl::Mutex& getGlobalNeonMutex()
+ {
+ static osl::Mutex aMutex;
+ return aMutex;
+ }
+}
+
+// static members
+bool NeonSession::m_bGlobalsInited = false;
NeonLockStore NeonSession::m_aNeonLockStore;
NeonSession::NeonSession( const rtl::Reference< DAVSessionFactory > & rSessionFactory,
@@ -638,7 +645,7 @@ NeonSession::~NeonSession( )
if ( m_pHttpSession )
{
{
- osl::Guard< osl::Mutex > theGlobalGuard( aGlobalNeonMutex );
+ osl::Guard< osl::Mutex > theGlobalGuard(getGlobalNeonMutex());
ne_session_destroy( m_pHttpSession );
}
m_pHttpSession = nullptr;
@@ -662,8 +669,8 @@ void NeonSession::Init()
if ( m_pHttpSession == nullptr )
{
// Ensure that Neon sockets are initialized
- osl::Guard< osl::Mutex > theGlobalGuard( aGlobalNeonMutex );
- if ( !m_bGlobalsInited )
+ osl::Guard< osl::Mutex > theGlobalGuard(getGlobalNeonMutex());
+ if (!m_bGlobalsInited )
{
if ( ne_sock_init() != 0 )
throw DAVException( DAVException::DAV_SESSION_CREATE,
@@ -713,7 +720,7 @@ void NeonSession::Init()
// new session needed, destroy old first
{
- osl::Guard< osl::Mutex > theGlobalGuard( aGlobalNeonMutex );
+ osl::Guard< osl::Mutex > theGlobalGuard(getGlobalNeonMutex());
ne_session_destroy( m_pHttpSession );
}
m_pHttpSession = nullptr;
@@ -735,7 +742,7 @@ void NeonSession::Init()
// to the session
{
- osl::Guard< osl::Mutex > theGlobalGuard( aGlobalNeonMutex );
+ osl::Guard< osl::Mutex > theGlobalGuard(getGlobalNeonMutex());
m_pHttpSession = ne_session_create(
OUStringToOString( m_aScheme, RTL_TEXTENCODING_UTF8 ).getStr(),
/* theUri.GetUserInfo(),
@@ -892,7 +899,7 @@ void NeonSession::OPTIONS( const OUString & inPath,
ne_request *req = ne_request_create(m_pHttpSession, "OPTIONS", OUStringToOString(
inPath, RTL_TEXTENCODING_UTF8 ).getStr());
{
- osl::Guard< osl::Mutex > theGlobalGuard( aGlobalNeonMutex );
+ osl::Guard< osl::Mutex > theGlobalGuard(getGlobalNeonMutex());
theRetVal = ne_request_dispatch(req);
}
@@ -2086,7 +2093,7 @@ int NeonSession::GET( ne_session * sess,
= ne_decompress_reader( req, ne_accept_2xx, reader, userdata );
{
- osl::Guard< osl::Mutex > theGlobalGuard( aGlobalNeonMutex );
+ osl::Guard< osl::Mutex > theGlobalGuard(getGlobalNeonMutex());
ret = ne_request_dispatch( req );
}
@@ -2125,7 +2132,7 @@ int NeonSession::GET0( ne_session * sess,
int ret;
{
- osl::Guard< osl::Mutex > theGlobalGuard( aGlobalNeonMutex );
+ osl::Guard< osl::Mutex > theGlobalGuard(getGlobalNeonMutex());
ret = ne_request_dispatch( req );
}
@@ -2171,7 +2178,7 @@ int NeonSession::PUT( ne_session * sess,
ne_set_request_body_buffer( req, buffer, size );
{
- osl::Guard< osl::Mutex > theGlobalGuard( aGlobalNeonMutex );
+ osl::Guard< osl::Mutex > theGlobalGuard(getGlobalNeonMutex());
ret = ne_request_dispatch( req );
}
@@ -2218,7 +2225,7 @@ int NeonSession::POST( ne_session * sess,
ne_set_request_body_buffer( req, buffer, strlen( buffer ) );
{
- osl::Guard< osl::Mutex > theGlobalGuard( aGlobalNeonMutex );
+ osl::Guard< osl::Mutex > theGlobalGuard(getGlobalNeonMutex());
ret = ne_request_dispatch( req );
}
diff --git a/ucb/source/ucp/webdav-neon/NeonSession.hxx b/ucb/source/ucp/webdav-neon/NeonSession.hxx
index be3ed76a0917..42e01cc61b51 100644
--- a/ucb/source/ucp/webdav-neon/NeonSession.hxx
+++ b/ucb/source/ucp/webdav-neon/NeonSession.hxx
@@ -278,9 +278,9 @@ private:
OUString makeAbsoluteURL( OUString const & rURL ) const;
};
-} // namespace webdav_ucp
+osl::Mutex& getGlobalNeonMutex();
-extern osl::Mutex aGlobalNeonMutex;
+} // namespace webdav_ucp
#endif // INCLUDED_UCB_SOURCE_UCP_WEBDAV_NEON_NEONSESSION_HXX
commit cbc79e563612e9a2eaf66d1e63f98d5094c09d62
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Mon Sep 10 12:39:57 2018 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Mon Sep 10 18:20:00 2018 +0200
add mutex guard to new methods
Change-Id: I4d6ae0622107df6f619f945575687f616f184ccc
Reviewed-on: https://gerrit.libreoffice.org/60260
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/ucb/source/ucp/webdav-neon/NeonSession.cxx b/ucb/source/ucp/webdav-neon/NeonSession.cxx
index c79090cd41db..38ff0ec7925f 100644
--- a/ucb/source/ucp/webdav-neon/NeonSession.cxx
+++ b/ucb/source/ucp/webdav-neon/NeonSession.cxx
@@ -259,6 +259,8 @@ extern "C" int NeonSession_NeonAuth( void * inUserData,
int NeonSession::NeonAuth(const char* inAuthProtocol, const char* inRealm,
int attempt, char* inoutUserName, char * inoutPassWord)
{
+ osl::Guard< osl::Mutex > theGuard( m_aMutex );
+
/* The callback used to request the username and password in the given
* realm. The username and password must be copied into the buffers
* which are both of size NE_ABUFSIZ. The 'attempt' parameter is zero
@@ -384,6 +386,8 @@ extern "C" int NeonSession_CertificationNotify( void *userdata,
int NeonSession::CertificationNotify(const ne_ssl_certificate *cert)
{
+ osl::Guard< osl::Mutex > theGuard( m_aMutex );
+
OSL_ASSERT( cert );
uno::Reference< security::XCertificateContainer > xCertificateContainer;
@@ -537,6 +541,8 @@ extern "C" void NeonSession_PreSendRequest( ne_request * req,
void NeonSession::PreSendRequest(ne_request* req, ne_buffer* headers)
{
+ osl::Guard< osl::Mutex > theGuard( m_aMutex );
+
// If there is a proxy server in between, it shall never use
// cached data. We always want 'up-to-date' data.
ne_buffer_concat( headers, "Pragma: no-cache", EOL, nullptr );
More information about the Libreoffice-commits
mailing list