libidav/session.c

changeset 100
f4127c4d1018
parent 75
56962faf2b42
child 104
6fb4d24d9df9
--- a/libidav/session.c	Sat Apr 04 20:37:03 2015 +0200
+++ b/libidav/session.c	Sat May 02 10:59:02 2015 +0200
@@ -65,6 +65,8 @@
     }
     sn->handle = curl_easy_init();
     curl_easy_setopt(sn->handle, CURLOPT_FOLLOWLOCATION, 1L);
+    
+    curl_easy_setopt(sn->handle, CURLOPT_SSL_VERIFYPEER, 0); // TODO: remove
 
     // set proxy
     DavProxy *proxy = sstrprefix(url, S("https")) ? context->https_proxy
@@ -137,7 +139,12 @@
 void dav_session_set_error(DavSession *sn, CURLcode c, int status) {
     if(status > 0) {
         switch(status) {
-            default: sn->error = DAV_ERROR; break;
+            default: {
+                switch(c) {
+                    default: sn->error = DAV_ERROR;
+                }
+                break;
+            }
             case 401: sn->error = DAV_UNAUTHORIZED; break;
             case 403: sn->error = DAV_FORBIDDEN; break;
             case 404: sn->error = DAV_NOT_FOUND; break;
@@ -145,7 +152,25 @@
             case 409: sn->error = DAV_CONFLICT; break;
         }
     } else {
-        sn->error = DAV_ERROR;
+        switch(c) {
+            case CURLE_UNSUPPORTED_PROTOCOL: sn->error = DAV_UNSUPPORTED_PROTOCOL; break;
+            case CURLE_COULDNT_RESOLVE_PROXY: sn->error = DAV_COULDNT_RESOLVE_PROXY; break;
+            case CURLE_COULDNT_RESOLVE_HOST: sn->error = DAV_COULDNT_RESOLVE_HOST; break;
+            case CURLE_COULDNT_CONNECT: sn->error = DAV_COULDNT_CONNECT; break;
+            case CURLE_OPERATION_TIMEDOUT: sn->error = DAV_TIMEOUT; break;
+            case CURLE_SSL_CONNECT_ERROR:
+            case CURLE_PEER_FAILED_VERIFICATION:
+            case CURLE_SSL_ENGINE_NOTFOUND:
+            case CURLE_SSL_ENGINE_SETFAILED:
+            case CURLE_SSL_CERTPROBLEM:
+            case CURLE_SSL_CIPHER:
+            case CURLE_SSL_CACERT:
+            case CURLE_SSL_CACERT_BADFILE:
+            case CURLE_SSL_SHUTDOWN_FAILED:
+            case CURLE_SSL_CRL_BADFILE:
+            case CURLE_SSL_ISSUER_ERROR: sn->error = DAV_SSL_ERROR; break;
+            default: sn->error = DAV_ERROR; break;
+        }
     }
     if(c != CURLE_OK) {
         sn->errorstr = curl_easy_strerror(c);

mercurial