25cdebe70a
(regression from commit f91effb36b
)
Change-Id: I24c8da1c8ca70739ac047918c7036d72c7f7330b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/169465
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
172 lines
5.8 KiB
Groff
172 lines
5.8 KiB
Groff
--- libcmis/src/libcmis/http-session.cxx.orig 2024-06-21 12:22:36.083125022 +0200
|
|
+++ libcmis/src/libcmis/http-session.cxx 2024-06-21 13:08:37.403016695 +0200
|
|
@@ -653,7 +653,7 @@
|
|
m_authProvided = authProvider->authenticationQuery( m_username, m_password );
|
|
if ( !m_authProvided )
|
|
{
|
|
- throw CurlException( "User cancelled authentication request" );
|
|
+ throw CurlException("User cancelled authentication request", CURLE_OK);
|
|
}
|
|
}
|
|
}
|
|
@@ -762,6 +762,7 @@
|
|
if ( CURLE_SSL_CACERT == errCode )
|
|
{
|
|
vector< string > certificates;
|
|
+ string err(errBuff);
|
|
|
|
// We somehow need to rerun the request to get the certificate
|
|
curl_easy_setopt(m_curlHandle, CURLOPT_SSL_VERIFYHOST, 0);
|
|
@@ -814,7 +815,7 @@
|
|
}
|
|
else
|
|
{
|
|
- throw CurlException( "Invalid SSL certificate" );
|
|
+ throw CurlException(err, CURLE_SSL_CACERT);
|
|
}
|
|
}
|
|
}
|
|
@@ -827,7 +828,6 @@
|
|
|
|
|
|
void HttpSession::checkOAuth2( string url )
|
|
-try
|
|
{
|
|
if ( m_oauth2Handler )
|
|
{
|
|
@@ -836,10 +836,6 @@
|
|
oauth2Authenticate( );
|
|
}
|
|
}
|
|
-catch ( const libcmis::Exception& e )
|
|
-{
|
|
- throw CurlException( e.what( ) );
|
|
-}
|
|
|
|
long HttpSession::getHttpStatus( )
|
|
{
|
|
@@ -906,15 +902,10 @@
|
|
}
|
|
|
|
void HttpSession::oauth2Refresh( )
|
|
-try
|
|
{
|
|
const ScopeGuard<bool> inOauth2Guard(m_inOAuth2Authentication, true);
|
|
m_oauth2Handler->refresh( );
|
|
}
|
|
-catch ( const libcmis::Exception& e )
|
|
-{
|
|
- throw CurlException( e.what() );
|
|
-}
|
|
|
|
void HttpSession::initProtocols( )
|
|
{
|
|
@@ -981,11 +972,45 @@
|
|
break;
|
|
default:
|
|
msg = what();
|
|
- if ( !isCancelled( ) )
|
|
- msg += ": " + m_url;
|
|
- else
|
|
- type = "permissionDenied";
|
|
- break;
|
|
+ switch (m_code)
|
|
+ {
|
|
+ case CURLE_COULDNT_RESOLVE_PROXY:
|
|
+ case CURLE_COULDNT_RESOLVE_HOST:
|
|
+ type = "dnsFailed";
|
|
+ break;
|
|
+ case CURLE_COULDNT_CONNECT:
|
|
+ case CURLE_SSL_CONNECT_ERROR:
|
|
+ case CURLE_SSL_CERTPROBLEM:
|
|
+ case CURLE_SSL_CIPHER:
|
|
+ case CURLE_PEER_FAILED_VERIFICATION:
|
|
+#if CURL_AT_LEAST_VERSION(7, 19, 0)
|
|
+ case CURLE_SSL_ISSUER_ERROR:
|
|
+#endif
|
|
+ case CURLE_SSL_PINNEDPUBKEYNOTMATCH:
|
|
+ case CURLE_SSL_INVALIDCERTSTATUS:
|
|
+ case CURLE_FAILED_INIT:
|
|
+#if CURL_AT_LEAST_VERSION(7, 69, 0)
|
|
+ case CURLE_QUIC_CONNECT_ERROR:
|
|
+#endif
|
|
+ type = "connectFailed";
|
|
+ break;
|
|
+ case CURLE_OPERATION_TIMEDOUT:
|
|
+ type = "connectTimeout";
|
|
+ break;
|
|
+ case CURLE_WRITE_ERROR:
|
|
+ case CURLE_READ_ERROR: // error returned from our callbacks
|
|
+ case CURLE_ABORTED_BY_CALLBACK:
|
|
+ case CURLE_SEND_ERROR:
|
|
+ case CURLE_RECV_ERROR:
|
|
+ type = "transferFailed";
|
|
+ break;
|
|
+ default:
|
|
+ if ( !isCancelled( ) )
|
|
+ msg += ": " + m_url;
|
|
+ else if (msg == "User cancelled authentication request")
|
|
+ type = "permissionDenied";
|
|
+ break;
|
|
+ }
|
|
}
|
|
|
|
return libcmis::Exception( msg, type );
|
|
--- libcmis/src/libcmis/http-session.hxx.orig 2024-06-21 12:36:22.785868998 +0200
|
|
+++ libcmis/src/libcmis/http-session.hxx 2024-06-21 12:36:44.272966309 +0200
|
|
@@ -71,10 +71,10 @@
|
|
{
|
|
}
|
|
|
|
- CurlException( std::string message ) :
|
|
+ CurlException(std::string message, CURLcode const code) :
|
|
exception( ),
|
|
m_message( message ),
|
|
- m_code( CURLE_OK ),
|
|
+ m_code(code),
|
|
m_url( ),
|
|
m_httpStatus( 0 ),
|
|
m_cancelled( true ),
|
|
--- libcmis/src/libcmis/sharepoint-session.cxx.orig 2024-06-21 12:23:07.164265783 +0200
|
|
+++ libcmis/src/libcmis/sharepoint-session.cxx 2024-06-21 12:37:45.528243723 +0200
|
|
@@ -289,6 +291,7 @@
|
|
if ( CURLE_SSL_CACERT == errCode )
|
|
{
|
|
vector< string > certificates;
|
|
+ string err(errBuff);
|
|
|
|
// We somehow need to rerun the request to get the certificate
|
|
curl_easy_setopt(m_curlHandle, CURLOPT_SSL_VERIFYHOST, 0);
|
|
@@ -344,7 +344,7 @@
|
|
}
|
|
else
|
|
{
|
|
- throw CurlException( "Invalid SSL certificate" );
|
|
+ throw CurlException(err, CURLE_SSL_CACERT);
|
|
}
|
|
}
|
|
}
|
|
--- libcmis/src/libcmis/session-factory.cxx.orig 2024-06-21 15:37:55.132824666 +0200
|
|
+++ libcmis/src/libcmis/session-factory.cxx 2024-06-21 15:36:17.558408868 +0200
|
|
@@ -96,7 +96,7 @@
|
|
}
|
|
catch (const CurlException& e)
|
|
{
|
|
- if (strcmp(e.what(), "Invalid SSL certificate") == 0)
|
|
+ if (e.getErrorCode() == CURLE_SSL_CACERT)
|
|
{
|
|
// no point in trying other protocols
|
|
throw e.getCmisException();
|
|
--- libcmis/qa/libcmis/test-atom.cxx.orig 2024-06-21 15:39:49.130310447 +0200
|
|
+++ libcmis/qa/libcmis/test-atom.cxx 2024-06-21 15:39:51.541320721 +0200
|
|
@@ -323,8 +323,8 @@
|
|
}
|
|
catch ( const libcmis::Exception& e )
|
|
{
|
|
- CPPUNIT_ASSERT_EQUAL_MESSAGE( "Wrong exception message",
|
|
- string( "Invalid SSL certificate" ), string( e.what() ) );
|
|
+ CPPUNIT_ASSERT_EQUAL_MESSAGE( "Wrong exception type",
|
|
+ string("connectFailed"), string(e.getType()) );
|
|
}
|
|
}
|
|
}
|