X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fcarddav%2Fcarddav-serveretag.cpp;h=8784218fddbd1acc1a0a63b8f92012fc4ce6ec11;hb=7195b19cb9b6bac69a55acdffabaec237dc67e78;hp=0bd84288b99468083b7d0f5a34d0441e8d9cba40;hpb=9bb2fe74bfed060ee6ee764ea8ed95c25e3e0446;p=xestiaab%2F.git diff --git a/source/carddav/carddav-serveretag.cpp b/source/carddav/carddav-serveretag.cpp index 0bd8428..8784218 100644 --- a/source/carddav/carddav-serveretag.cpp +++ b/source/carddav/carddav-serveretag.cpp @@ -30,6 +30,8 @@ void CardDAV::GetServerETagValueThread() { + + // Get the server etag value (threaded). PageData.Clear(); PageHeader.Clear(); @@ -39,8 +41,8 @@ void CardDAV::GetServerETagValueThread() AbortConnection = FALSE; bool FilenameIsDirectory = FALSE; - CURL *conn; - CURLcode conncode; + CURL *conn; + CURLcode conncode; wxString ServerAddressURL; wxString ServerAuth; wxString ServerAddressSSL; @@ -48,6 +50,12 @@ void CardDAV::GetServerETagValueThread() conn = curl_easy_init(); +#if defined(__APPLE__) + + SetConnectionObject(conn); + +#endif + struct CardDAVCURLPasser { CardDAV *Data; @@ -64,39 +72,11 @@ void CardDAV::GetServerETagValueThread() wxString Data1; wxString Data2; - ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/") + ServerPrefix + ServerFilenameLocation; + ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + ServerPrefix + ServerFilenameLocation; ServerAddressSSL = wxT("https://") + ServerAddressURL; ServerAddressNormal = wxT("http://") + ServerAddressURL; ServerAuth = ServerUser + wxT(":") + ServerPass; - - // Workout if path is directory or filename. - - /*if (ServerAddress){ - FilenameIsDirectory = TRUE; - } else { - FilenameIsDirectory = FALSE; - }*/ - - // Try SSL first. - - - /* - char *ServerAdrSSLChar = new char[(ServerAddressSSL.Length() - 1)]; - //memset(ServerAdrSSLChar, 0, ServerAddressSSL.Length()); - strncpy(ServerAdrSSLChar, (const char*)ServerAddressSSL.mb_str(wxConvUTF8), (ServerAddressSSL.Length() - 1)); - - char *ServerAdrNorChar = new char[(ServerAddressNormal.Length() - 1)]; - //memset(ServerAdrNorChar, 0, ServerAddressSSL.Length()); - strncpy(ServerAdrNorChar, (const char*)ServerAddressNormal.mb_str(wxConvUTF8), (ServerAddressNormal.Length() - 1)); - - char *ServerAuthChar = new char[(ServerAuth.Length() - 1)]; - //memset(ServerAuthChar, 0, ServerAddressSSL.Length()); - strncpy(ServerAuthChar, (const char*)ServerAuth.mb_str(wxConvUTF8), (ServerAuth.Length() - 1)); - - */ - - //std::string WriteDataString = std::string(ServerUploadData.mb_str()); std::map::iterator ActIter; struct UploadDataStruc UploadData; @@ -109,9 +89,6 @@ void CardDAV::GetServerETagValueThread() "" "" - //"" - //" " - //"" "" "" ""; @@ -135,17 +112,13 @@ void CardDAV::GetServerETagValueThread() curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT"); curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); - - //UploadData.readptr = &CardDAVDataQuery; - //UploadData.sizeleft = CardDAVDataQuery.Len(); - //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); - //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); - //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); - - //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc); curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query); curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query)); +#if defined(__APPLE__) || defined(__WIN32__) + +#else + ServerCertFilename = GetAccountDir(ServerAccount, TRUE); if (wxFile::Exists(ServerCertFilename) == TRUE){ @@ -156,6 +129,8 @@ void CardDAV::GetServerETagValueThread() } +#endif + claconncode = (curl_easy_perform(conn)); // If CURLE_PEER_FAILED_VERIFICATION is returned, retry without @@ -201,17 +176,16 @@ void CardDAV::GetServerETagValueThread() // Check if it fails with a CURLE_SSL_CACERT then compare // the certificates as PEM files. - if (claconncode == CURLE_SSL_CACERT && wxFile::Exists(ServerCertFilename) == TRUE){ +#if defined(__APPLE__) - //curl_easy_cleanup(conn); - //conn = curl_easy_init(); +#else + + if (claconncode == CURLE_SSL_CACERT && wxFile::Exists(ServerCertFilename) == TRUE){ CURL *sslerrconn; sslerrconn = curl_easy_init(); CURLcode sslerrconncode; - //claconncode = (curl_easy_perform(conn)); - wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/"); PageData.clear(); @@ -312,6 +286,8 @@ void CardDAV::GetServerETagValueThread() curl_easy_cleanup(sslerrconn); } + +#endif // Sort out SSL error. @@ -349,6 +325,12 @@ void CardDAV::GetServerETagValueThread() sslerrconncode = (curl_easy_perform(sslerrconn)); +#if defined(__APPLE__) + + SetConnectionObject(sslerrconn); + +#endif + SSLCertCol = BuildSSLCollection(sslerrconn); SSLCertCol.SuccessCode = 1; @@ -359,7 +341,7 @@ void CardDAV::GetServerETagValueThread() } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){ - fprintf(stderr, "curl_easy_perform() failed: %s\n", + fprintf(stderr, "GetServerETagValueThread(): curl_easy_perform() failed: %s\n", curl_easy_strerror(claconncode)); int http_code = 0; curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code); @@ -371,7 +353,7 @@ void CardDAV::GetServerETagValueThread() } else { - fprintf(stderr, "curl_easy_perform() failed: %s\n", + fprintf(stderr, "GetServerETagValueThread(): curl_easy_perform() failed: %s\n", curl_easy_strerror(claconncode)); int http_code = 0; curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code); @@ -403,14 +385,6 @@ void CardDAV::GetServerETagValueThread() curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT"); curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); - - //UploadData.readptr = &CardDAVDataQuery; - //UploadData.sizeleft = CardDAVDataQuery.Len(); - //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); - //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); - //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); - - //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc); curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query); curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query)); @@ -597,6 +571,8 @@ void CardDAV::GetServerETagValueThread() void CardDAV::GetServerETagValue(){ + // Get the server etag value. + std::thread ConnectThread(&CardDAV::GetServerETagValueThread, this); ConnectThread.detach();