X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fcarddav%2Fcarddav-processdata.cpp;h=55a353fd04ef2e4ad255ab3218ecafdf9d2c6c23;hb=d48da3aa9bbe019af47eeb29f969634d7d03ea9f;hp=516659b216e229ee0bf3351251e2efd6ada532d4;hpb=0ab43e2ebcf2ef07a25a71b9dc1927f2feff8274;p=xestiaab%2F.git diff --git a/source/carddav/carddav-processdata.cpp b/source/carddav/carddav-processdata.cpp index 516659b..55a353f 100644 --- a/source/carddav/carddav-processdata.cpp +++ b/source/carddav/carddav-processdata.cpp @@ -44,10 +44,16 @@ void CardDAV::ProcessDataThread(){ wxString ServerAddressURL; wxString ServerAuth; wxString ServerAddressSSL; - wxString ServerAddressNormal; - + wxString ServerAddressNormal; + conn = curl_easy_init(); +#if defined(__APPLE__) + + SetConnectionObject(conn); + +#endif + struct CardDAVCURLPasser { CardDAV *Data; @@ -68,31 +74,11 @@ void CardDAV::ProcessDataThread(){ wxString ETagOriginal; wxString ETagServer; - 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; - - // 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; @@ -111,6 +97,8 @@ void CardDAV::ProcessDataThread(){ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, (const char*)ServerMethod.mb_str(wxConvUTF8)); } + + // Try SSL first. if (ServerSSL){ @@ -141,6 +129,10 @@ void CardDAV::ProcessDataThread(){ } +#if defined(__APPLE__) + +#else + ServerCertFilename = GetAccountDir(ServerAccount, TRUE); if (wxFile::Exists(ServerCertFilename) == TRUE){ @@ -150,14 +142,8 @@ void CardDAV::ProcessDataThread(){ curl_easy_setopt(conn, CURLOPT_CAINFO, (const char*)ServerCertFilename.mb_str(wxConvUTF8)); } - - //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); + +#endif claconncode = (curl_easy_perform(conn)); @@ -211,17 +197,16 @@ void CardDAV::ProcessDataThread(){ // 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__) + +#else - //curl_easy_cleanup(conn); - //conn = curl_easy_init(); + 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("/"); curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8)); @@ -241,9 +226,9 @@ void CardDAV::ProcessDataThread(){ wxString SSLLocalData; wxString SSLServerData; - - sslerrconncode = (curl_easy_perform(sslerrconn)); - + + sslerrconncode = (curl_easy_perform(sslerrconn)); + SSLCertCol = BuildSSLCollection(sslerrconn); std::map::iterator SSLCDIter = SSLCertCol.SSLCollection.find(0); std::multimap::iterator SSLDataIter = SSLCDIter->second.CertData.find(wxT("Cert")); @@ -324,6 +309,8 @@ void CardDAV::ProcessDataThread(){ curl_easy_cleanup(sslerrconn); } + +#endif // Sort out SSL error. @@ -358,17 +345,29 @@ void CardDAV::ProcessDataThread(){ curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1); curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0); curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1); - + +#if defined(__APPLE__) + + SetConnectionObject(sslerrconn); + +#endif + sslerrconncode = (curl_easy_perform(sslerrconn)); +#if defined(__APPLE__) + +#else + SSLCertCol = BuildSSLCollection(sslerrconn); SSLCertCol.SuccessCode = 1; +#endif + return; } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){ - fprintf(stderr, "curl_easy_perform() failed: %s\n", + fprintf(stderr, "ProcessDataThrad(): curl_easy_perform() failed: %s\n", curl_easy_strerror(claconncode)); int http_code = 0; curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code); @@ -508,7 +507,6 @@ void CardDAV::ProcessDataThread(){ // Catch all. - //ActIter->second = 1; *ServerResult = TRUE; return;