Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  exceptions.patch.1   Sprache: unbekannt

 
--- 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()) );
         }
     }
 }

[ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge