Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Added signal for display the import results.
[xestiaab/.git] / source / carddav / carddav.cpp
index 5a07c41..851b55c 100644 (file)
@@ -13,7 +13,6 @@
 size_t WritebackFunc(char *ptr, size_t size, size_t nmemb, wxString *stream){\r
        \r
        wxString Data;\r
-       wxString *PageInput;\r
        Data = wxString::FromUTF8((char *)ptr);\r
        \r
        stream->Append(Data);\r
@@ -75,6 +74,7 @@ wxString CardDAV::PageData;
 CURLcode CardDAV::claconncode;\r
 int CardDAV::HTTPErrorCode;\r
 wxString CardDAV::ErrorMessage;\r
+SSLCertCollection CardDAV::VerifyCertCollection;\r
 \r
 CardDAV::CardDAV(){\r
        ServerPort = 8080;\r
@@ -225,6 +225,137 @@ void CardDAV::Abort(){
 \r
 }\r
 \r
+CURLcode CardDAV::SSLVerifyTest(){\r
+\r
+       PageData.Clear();\r
+       PageHeader.Clear();\r
+\r
+       SSLStatus = TRUE;\r
+       AuthPassed = TRUE;\r
+       AbortConnection = FALSE;\r
+\r
+       CURL *conn;\r
+       CURL *connssldata;\r
+       CURLcode conncode;\r
+       wxString ServerAddressURL;\r
+       wxString ServerAuth;\r
+       wxString ServerAddressSSL;\r
+       wxString ServerAddressNormal;\r
+\r
+       conn = curl_easy_init();\r
+\r
+       /*struct CardDAVCURLPasser {\r
+\r
+               CardDAV *Data;\r
+               bool HeaderMode = TRUE;\r
+\r
+       } CardDAVHeader, CardDAVFooter;\r
+\r
+       CardDAVHeader.Data = this;\r
+       CardDAVHeader.HeaderMode = TRUE;\r
+\r
+       CardDAVFooter.Data = this;\r
+       CardDAVFooter.HeaderMode = FALSE;*/\r
+\r
+       wxString Data1;\r
+       wxString Data2;\r
+\r
+       ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+       ServerAddressSSL = wxT("https://") + ServerAddressURL;\r
+\r
+       if (ServerSSL){\r
+\r
+               union {\r
+                       struct curl_slist       *certdata;\r
+                       struct curl_certinfo    *certinfo;\r
+               } ptr;\r
+\r
+               ptr.certdata = NULL;\r
+\r
+               // Setup two initial connections and attempt to get the certificate data.\r
+\r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_CERTINFO, 1);\r
+               curl_easy_setopt(conn, CURLOPT_VERBOSE, 1L);\r
+               //curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, FALSE);\r
+               //curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, FALSE);\r
+               curl_easy_setopt(conn, CURLOPT_ERRORBUFFER, curlerrbuffer);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+\r
+               conncode = (curl_easy_perform(conn));\r
+\r
+               // Check if the SSL certificate is valid or self-signed or some other\r
+               // error occured.\r
+\r
+               if (conncode == CURLE_OK){\r
+\r
+                       // Connection is OK. Do nothing.\r
+\r
+                       *ServerResult = TRUE;\r
+\r
+               } else if (conncode == CURLE_SSL_CACERT || conncode == CURLE_SSL_CONNECT_ERROR){\r
+\r
+                       connssldata = curl_easy_init();\r
+\r
+                       // Retry but get the certificates without peer/host verification.\r
+\r
+                       curl_easy_setopt(connssldata, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(connssldata, CURLOPT_CERTINFO, 1);\r
+                       curl_easy_setopt(connssldata, CURLOPT_VERBOSE, 1L);\r
+                       //curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, FALSE);\r
+                       //curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, FALSE);\r
+                       curl_easy_setopt(connssldata, CURLOPT_ERRORBUFFER, curlerrbuffer);\r
+                       curl_easy_setopt(connssldata, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                       curl_easy_setopt(connssldata, CURLOPT_WRITEDATA, &PageData);\r
+                       curl_easy_setopt(connssldata, CURLOPT_WRITEHEADER, &PageHeader);\r
+                       //curl_easy_setopt(connssldata, CURLOPT_SSL_VERIFYPEER, FALSE);\r
+                       //curl_easy_setopt(connssldata, CURLOPT_SSL_VERIFYHOST, FALSE);\r
+\r
+                       CURLcode certfetchcode;\r
+\r
+                       certfetchcode = (curl_easy_perform(connssldata));\r
+\r
+                       VerifyCertCollection = BuildSSLCollection(connssldata);\r
+\r
+                       if (certfetchcode == CURLE_OK){\r
+                               \r
+                               curl_easy_getinfo(connssldata, CURLINFO_CERTINFO, &ptr.certdata);\r
+\r
+                               VerifyCertCollection = BuildSSLCollection(connssldata);\r
+\r
+                       } else {\r
+\r
+                               conncode = certfetchcode;\r
+\r
+                       }\r
+\r
+                       *ServerResult = FALSE;\r
+\r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                               curl_easy_strerror(conncode));\r
+\r
+                       ErrorMessage = wxString::Format(wxT("%s"), curl_easy_strerror(conncode));\r
+\r
+                       *ServerResult = FALSE;\r
+\r
+               }\r
+\r
+       }\r
+\r
+       curl_easy_cleanup(conn);\r
+\r
+       return conncode;\r
+\r
+}\r
+\r
+SSLCertCollection CardDAV::GetSSLVerifyResults(){\r
+       return VerifyCertCollection;\r
+}\r
+\r
 bool CardDAV::Connect(){\r
 \r
        PageData.Clear();\r
@@ -234,15 +365,15 @@ bool CardDAV::Connect(){
        AuthPassed = TRUE;\r
        AbortConnection = FALSE;\r
 \r
-        CURL *conn;\r
-        CURLcode conncode;\r
+    CURL *conn;\r
+    CURLcode conncode;\r
        wxString ServerAddressURL;\r
        wxString ServerAuth;\r
        wxString ServerAddressSSL;\r
        wxString ServerAddressNormal;   \r
 \r
         conn = curl_easy_init();\r
-       \r
+\r
        struct CardDAVCURLPasser {\r
        \r
                CardDAV *Data;\r
@@ -285,6 +416,46 @@ bool CardDAV::Connect(){
        \r
        if (ServerSSL){\r
 \r
+               union {\r
+                       struct curl_slist       *certdata;\r
+                       struct curl_certinfo    *certinfo;\r
+               } ptr;\r
+\r
+               ptr.certdata = NULL;\r
+\r
+               // Setup two initial connections and attempt to get the certificate data.\r
+\r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_CERTINFO, 1);\r
+\r
+               conncode = (curl_easy_perform(conn));\r
+\r
+               // Check if the SSL certificate is valid or self-signed or some other\r
+               // error occured.\r
+\r
+               if (conncode == CURLE_OK){\r
+\r
+                       // Connection is OK. Do nothing.\r
+\r
+               } else if (conncode == CURLE_SSL_CACERT){\r
+\r
+                       // Post message saying SSL certificate is invalid and \r
+\r
+\r
+                       curl_easy_getinfo(conn, CURLINFO_CERTINFO, &ptr.certdata);\r
+\r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                               curl_easy_strerror(conncode));\r
+\r
+                       ErrorMessage = wxString::Format(wxT("%s"), curl_easy_strerror(conncode));\r
+\r
+                       *ServerResult = FALSE;\r
+                       return FALSE;\r
+\r
+               }\r
+\r
                curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
                curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
                curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
@@ -299,11 +470,6 @@ bool CardDAV::Connect(){
                curl_easy_setopt(conn, CURLOPT_CERTINFO, 1);\r
 \r
                conncode = (curl_easy_perform(conn));\r
-\r
-               union {\r
-                       struct curl_slist       *certdata;\r
-                       struct curl_certinfo    *certinfo;\r
-               } ptr;\r
                \r
                ptr.certdata = NULL;\r
 \r
@@ -311,6 +477,31 @@ bool CardDAV::Connect(){
                \r
                if (conncode == CURLE_OK){\r
 \r
+                       // Process the server header response and look for\r
+                       // 'addressbook' within the DAV header.\r
+\r
+                       wxStringTokenizer wxSHeaderLines(PageHeader, wxT("\r\n"));\r
+                       wxString wxSHeaderLine;\r
+                       std::map<int, wxString> DAVHeaderLines;\r
+\r
+                       while (wxSHeaderLines.HasMoreTokens()){\r
+\r
+                               wxSHeaderLine = wxSHeaderLines.GetNextToken();\r
+\r
+                               if (wxSHeaderLine.Mid(0, 4) == wxT("DAV:")){\r
+\r
+                                       // Look for address book in the line.\r
+\r
+                                       if (wxSHeaderLine.Find(wxT("addressbook")) != wxNOT_FOUND){\r
+\r
+                                               HasCalDAVSupport = TRUE;\r
+\r
+                                       }\r
+\r
+                               }\r
+\r
+                       }\r
+\r
                        *ServerResult = TRUE;\r
                        AuthPassed = TRUE;\r
                        SSLStatus = TRUE;\r
@@ -496,7 +687,7 @@ void CardDAV::ProcessDataThread(){
        struct UploadDataStruc UploadData;\r
        \r
        \r
-       ActIter = ActivityListPtr->find(ItemIndex);\r
+       ActIter = ActivityListPtr->find((int)ItemIndex);\r
        \r
        // Update result flag.\r
 \r
@@ -762,13 +953,13 @@ void CardDAV::ProcessDataThread(){
                        SSLCertCol = BuildSSLCollection(sslerrconn);\r
                        SSLCertCol.SuccessCode = 1;\r
 \r
-                       return;\r
+                       return;\r
                \r
                } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){\r
                \r
                        fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
                                        curl_easy_strerror(claconncode));\r
-                       long http_code = 0;\r
+                       int http_code = 0;\r
                        curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
                        fprintf(stderr, "Error code was: %d\n", http_code);\r
                                        \r
@@ -778,7 +969,7 @@ void CardDAV::ProcessDataThread(){
 \r
                        fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
                                        curl_easy_strerror(claconncode));\r
-                       long http_code = 0;\r
+                       int http_code = 0;\r
                        curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
                        fprintf(stderr, "Error code was: %d\n", http_code);\r
 \r
@@ -975,7 +1166,7 @@ void CardDAV::ProcessDataThread(){
        \r
        // Catch all.\r
        \r
-       ActIter->second = 1;\r
+       //ActIter->second = 1;\r
        *ServerResult = TRUE;\r
        return;\r
 \r
@@ -1062,7 +1253,7 @@ void CardDAV::GetServerContactData()
        struct UploadDataStruc UploadData;\r
        \r
        \r
-       ActIter = ActivityListPtr->find(ItemIndex);\r
+       ActIter = ActivityListPtr->find((int)ItemIndex);\r
 \r
        //ActIter->second = 1;\r
 \r
@@ -1161,21 +1352,22 @@ void CardDAV::GetServerContactData()
 \r
                        wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
 \r
-                       curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
-                       curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
-                       curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
-                       curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
-                       curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
-                       curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);             \r
-                       curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
-                       curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
-                       curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
-                       curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
-                       curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 1L);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT);               \r
+                       curl_easy_setopt(sslerrconn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1);\r
                \r
                        //UploadData.readptr = &CardDAVDataQuery;\r
                        //UploadData.sizeleft = CardDAVDataQuery.Len();\r
                        curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYHOST, 0);\r
                        curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
                \r
                        wxString SSLLocalData;\r
@@ -1198,9 +1390,6 @@ void CardDAV::GetServerContactData()
                        // Load the recovery database for tasks not done.\r
        \r
                        if (SSLLocalFile.IsOpened() == TRUE){\r
-\r
-                       // Check if we are using wxWidgets version 2.8 or less and\r
-                       // execute the required command accordingly.\r
        \r
                                SSLLocalFile.ReadAll(&SSLLocalData, wxConvAuto());\r
                \r
@@ -1299,7 +1488,7 @@ void CardDAV::GetServerContactData()
                \r
                        fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
                                        curl_easy_strerror(claconncode));\r
-                       long http_code = 0;\r
+                       int http_code = 0;\r
                        curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
                        fprintf(stderr, "Error code was: %d\n", http_code);\r
                                        \r
@@ -1309,7 +1498,7 @@ void CardDAV::GetServerContactData()
 \r
                        fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
                                        curl_easy_strerror(claconncode));\r
-                       long http_code = 0;\r
+                       int http_code = 0;\r
                        curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
                        fprintf(stderr, "Error code was: %d\n", http_code);\r
 \r
@@ -1396,7 +1585,8 @@ void CardDAV::GetServerETagValueThread()
        SSLStatus = TRUE;\r
        AuthPassed = TRUE;\r
        AbortConnection = FALSE;\r
-\r
+       \r
+       bool FilenameIsDirectory = FALSE;\r
         CURL *conn;\r
         CURLcode conncode;\r
        wxString ServerAddressURL;\r
@@ -1428,6 +1618,14 @@ void CardDAV::GetServerETagValueThread()
        \r
        ServerAuth = ServerUser + wxT(":") + ServerPass;\r
        \r
+       // Workout if path is directory or filename.\r
+       \r
+       /*if (ServerAddress){\r
+               FilenameIsDirectory = TRUE;\r
+       } else {\r
+               FilenameIsDirectory = FALSE;\r
+       }*/\r
+       \r
        // Try SSL first.\r
 \r
 \r
@@ -1452,7 +1650,7 @@ void CardDAV::GetServerETagValueThread()
        struct UploadDataStruc UploadData;\r
        \r
        \r
-       ActIter = ActivityListPtr->find(ItemIndex);\r
+       ActIter = ActivityListPtr->find((int)ItemIndex);\r
        \r
        static const char* query =\r
        "<?xml version=\"1.0\" encoding=\"utf-8\" ?>"\r
@@ -1531,7 +1729,7 @@ void CardDAV::GetServerETagValueThread()
                        curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
                        curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
                        curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
-                       curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));   \r
+                       curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));\r
                        \r
                        claconncode = (curl_easy_perform(conn));\r
                        \r
@@ -1564,6 +1762,9 @@ void CardDAV::GetServerETagValueThread()
 \r
                        wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
 \r
+                       PageData.clear();\r
+                       PageHeader.clear();\r
+\r
                        curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8));\r
                        curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0);\r
                        curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
@@ -1578,6 +1779,9 @@ void CardDAV::GetServerETagValueThread()
                        curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1);\r
                        curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
                        curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 1);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYHOST, 2);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_CAINFO, (const char*)ServerCertFilename.mb_str(wxConvUTF8));\r
                \r
                        wxString SSLLocalData;\r
                        wxString SSLServerData;\r
@@ -1595,7 +1799,7 @@ void CardDAV::GetServerETagValueThread()
 #else\r
                        SSLLocalFile.Open(ServerCertFilename, wxT("r"));\r
 #endif \r
-       \r
+\r
                        // Load the recovery database for tasks not done.\r
        \r
                        if (SSLLocalFile.IsOpened() == TRUE){\r
@@ -1636,7 +1840,9 @@ void CardDAV::GetServerETagValueThread()
                                curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
                                curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
                                curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
-                               curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));           \r
+                               curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));\r
+                               curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 0);\r
+                               curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 0);              \r
                        \r
                                claconncode = (curl_easy_perform(conn));\r
                                \r
@@ -1655,8 +1861,6 @@ void CardDAV::GetServerETagValueThread()
                \r
                }\r
 \r
-\r
-\r
                // Sort out SSL error.\r
                \r
                // When SSL cert error occurs, connect again and fetch certificates.\r
@@ -1696,15 +1900,20 @@ void CardDAV::GetServerETagValueThread()
                        SSLCertCol = BuildSSLCollection(sslerrconn);\r
                        SSLCertCol.SuccessCode = 1;\r
 \r
+                       curl_easy_cleanup(conn);\r
+                       curl_easy_cleanup(sslerrconn);\r
+\r
                        return;\r
                \r
                } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){\r
                \r
                        fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
                                        curl_easy_strerror(claconncode));\r
-                       long http_code = 0;\r
+                       int http_code = 0;\r
                        curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
                        fprintf(stderr, "Error code was: %d\n", http_code);\r
+\r
+                       curl_easy_cleanup(conn);\r
                                        \r
                        return;\r
                \r
@@ -1712,10 +1921,12 @@ void CardDAV::GetServerETagValueThread()
 \r
                        fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
                                        curl_easy_strerror(claconncode));\r
-                       long http_code = 0;\r
+                       int http_code = 0;\r
                        curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
                        fprintf(stderr, "Error code was: %d\n", http_code);\r
 \r
+                       curl_easy_cleanup(conn);\r
+\r
                        return;\r
 \r
                }\r
@@ -1762,7 +1973,7 @@ void CardDAV::GetServerETagValueThread()
                \r
                        fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
                                        curl_easy_strerror(conncode));\r
-                                       \r
+                               \r
                        return;\r
                \r
                } else {\r
@@ -1778,7 +1989,7 @@ void CardDAV::GetServerETagValueThread()
        \r
        xmlDocPtr xmlCardDAVDoc;\r
 \r
-       xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0);\r
+       xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), (int)PageData.Len(), "noname.xml", NULL, 0);\r
 \r
        xmlNodePtr nodeLevel1;\r
        xmlNodePtr nodeLevel2;\r
@@ -1801,6 +2012,9 @@ void CardDAV::GetServerETagValueThread()
                nodeLevel1 = nodeLevel1->next)\r
        {\r
 \r
+               bool HREFFound = FALSE;\r
+               bool ETagFound = FALSE;\r
+\r
                for (nodeLevel2 = nodeLevel1->children;\r
                        nodeLevel2 != NULL;\r
                        nodeLevel2 = nodeLevel2->next)\r
@@ -1811,9 +2025,6 @@ void CardDAV::GetServerETagValueThread()
                        nodeLevel3 = nodeLevel3->next)\r
                        {\r
 \r
-                               bool HREFFound = FALSE;\r
-                               bool ETagFound = FALSE;\r
-\r
                                if (!xmlStrcmp(nodeLevel3->name, (const xmlChar *)"href") ||\r
                                !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"d:href") ||\r
                                !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"D:href")\r
@@ -1892,21 +2103,19 @@ void CardDAV::GetServerETagValueThread()
 \r
                                }\r
 \r
-                               if (HREFFound = TRUE && ETagFound == TRUE){\r
+                       }\r
+\r
+               }\r
+               \r
+               if (HREFFound == TRUE && ETagFound == TRUE){\r
                                \r
-                                       // Add to the map data.\r
+                       // Add to the map data.\r
                                        \r
-                                       xmlDataMap.insert(std::make_pair(DataFilename, ETagData));\r
+                       xmlDataMap.insert(std::make_pair(DataFilename, ETagData));\r
                                \r
-                               }\r
-                               \r
-                               // Reset the values.\r
+                       HREFFound = FALSE;\r
+                       ETagFound = FALSE;\r
                                \r
-                               HREFFound = FALSE;\r
-                               ETagFound = FALSE;\r
-\r
-                       }\r
-\r
                }\r
 \r
 \r
@@ -1915,7 +2124,6 @@ void CardDAV::GetServerETagValueThread()
        xmlFreeDoc(xmlCardDAVDoc);\r
 \r
        // Get the first result.\r
-       \r
 \r
        for (std::map<wxString,wxString>::iterator iter = xmlDataMap.begin(); \r
                iter != xmlDataMap.end(); ++iter){\r
@@ -2005,12 +2213,10 @@ ContactListData CardDAV::GetContactList(wxString SyncTokenInc){
        AbortConnection = FALSE;\r
 \r
        CURL *conn;\r
-       CURLcode conncode;\r
        wxString ServerAddressURL;\r
        wxString ServerAuth;\r
        wxString ServerAddressSSL;\r
-       wxString ServerAddressNormal;   \r
-\r
+       wxString ServerAddressNormal;\r
 \r
        conn = curl_easy_init();\r
        \r
@@ -2098,7 +2304,7 @@ ContactListData CardDAV::GetContactList(wxString SyncTokenInc){
        std::map<int,int>::iterator ActIter;\r
        struct UploadDataStruc UploadData;\r
        \r
-       ActIter = ActivityListPtr->find(ItemIndex);\r
+       ActIter = ActivityListPtr->find((int)ItemIndex);\r
 \r
        curl_slist *slist = NULL;       \r
 \r
@@ -2346,7 +2552,7 @@ ContactListData CardDAV::GetContactList(wxString SyncTokenInc){
                \r
                        fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
                                        curl_easy_strerror(claconncode));\r
-                       long http_code = 0;\r
+                       int http_code = 0;\r
                        curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
                        fprintf(stderr, "Error code was: %d\n", http_code);\r
                                        \r
@@ -2356,7 +2562,7 @@ ContactListData CardDAV::GetContactList(wxString SyncTokenInc){
 \r
                        fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
                                        curl_easy_strerror(claconncode));\r
-                       long http_code = 0;\r
+                       int http_code = 0;\r
                        curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
                        fprintf(stderr, "Error code was: %d\n", http_code);\r
 \r
@@ -2411,9 +2617,9 @@ ContactListData CardDAV::GetContactList(wxString SyncTokenInc){
                \r
                        fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
                                        curl_easy_strerror(claconncode));\r
-                       long http_code = 0;\r
+                       int http_code = 0;\r
                        curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
-                       fprintf(stderr, "Error code was: %l\n", http_code);\r
+                       fprintf(stderr, "Error code was: %i\n", http_code);\r
                                        \r
                        return ContactListFinal;\r
                        \r
@@ -2421,9 +2627,9 @@ ContactListData CardDAV::GetContactList(wxString SyncTokenInc){
 \r
                        fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
                                        curl_easy_strerror(claconncode));\r
-                       long http_code = 0;\r
+                       int http_code = 0;\r
                        curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
-                       fprintf(stderr, "Error code was: %l\n", http_code);\r
+                       fprintf(stderr, "Error code was: %i\n", http_code);\r
                                \r
                        return ContactListFinal;\r
 \r
@@ -2432,7 +2638,7 @@ ContactListData CardDAV::GetContactList(wxString SyncTokenInc){
        }\r
 \r
        xmlDocPtr xmlCardDAVDoc;\r
-       xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0);\r
+       xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), (int)PageData.Len(), "noname.xml", NULL, 0);\r
 \r
        xmlNodePtr nodeLevel1;\r
        xmlNodePtr nodeLevel2;\r
@@ -2541,8 +2747,8 @@ ContactListData CardDAV::GetContactList(wxString SyncTokenInc){
                                        \r
                                                        if ((!xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"status") ||\r
                                                        !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"d:status") ||\r
-                                                       !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"D:status") && HTTPStatus == FALSE)\r
-                                                       ){\r
+                                                       !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"D:status")) && HTTPStatus == FALSE)\r
+                                                       {\r
 \r
                                                                // Get the filename.\r
                                        \r
@@ -2750,8 +2956,8 @@ ContactListData CardDAV::GetContactList(wxString SyncTokenInc){
                                        \r
                                                        if ((!xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"status") ||\r
                                                        !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"d:status") ||\r
-                                                       !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"D:status") && HTTPStatus == FALSE)\r
-                                                       ){\r
+                                                       !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"D:status")) && HTTPStatus == FALSE)\r
+                                                       {\r
 \r
                                                                // Get the filename.\r
                                        \r
@@ -3147,7 +3353,7 @@ wxString CardDAV::GetDefaultAddressBookURL(){
        // Process the XML data from the application.\r
        \r
        xmlDocPtr xmlCardDAVDoc;\r
-       xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0);\r
+       xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), (int)PageData.Len(), "noname.xml", NULL, 0);\r
 \r
        xmlNodePtr nodeLevel1;\r
        xmlNodePtr nodeLevel2;\r
@@ -3326,7 +3532,7 @@ wxString CardDAV::GetDefaultAddressBookURL(){
                \r
        }\r
 \r
-       xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0);\r
+       xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), (int)PageData.Len(), "noname.xml", NULL, 0);\r
                \r
        for (nodeLevel1 = xmlCardDAVDoc->children;\r
                nodeLevel1 != NULL;\r
@@ -3497,7 +3703,7 @@ wxString CardDAV::GetDefaultAddressBookURL(){
                \r
        }\r
        \r
-       xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0);\r
+       xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), (int)PageData.Len(), "noname.xml", NULL, 0);\r
                \r
        for (nodeLevel1 = xmlCardDAVDoc->children;\r
                nodeLevel1 != NULL;\r
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy