X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;ds=sidebyside;f=source%2Fcarddav%2Fcarddav-serveretag.cpp;h=8784218fddbd1acc1a0a63b8f92012fc4ce6ec11;hb=7195b19cb9b6bac69a55acdffabaec237dc67e78;hp=85b0e15f2f2cc5ce27b2058a48c8237042ebeafb;hpb=911611528b36f56f7de9b6bf027b4c2a1a54df00;p=xestiaab%2F.git
diff --git a/source/carddav/carddav-serveretag.cpp b/source/carddav/carddav-serveretag.cpp
index 85b0e15..8784218 100644
--- a/source/carddav/carddav-serveretag.cpp
+++ b/source/carddav/carddav-serveretag.cpp
@@ -1,3 +1,21 @@
+// carddav-serveretag.cpp - CardDAV Object - Server ETag subroutines.
+//
+// (c) 2012-2015 Xestia Software Development.
+//
+// This file is part of Xestia Address Book.
+//
+// Xestia Address Book is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by the
+// Free Software Foundation, version 3 of the license.
+//
+// Xestia Address Book is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with Xestia Address Book. If not, see
+
#include "carddav.h"
#include "../version.h"
#include
@@ -12,6 +30,8 @@
void CardDAV::GetServerETagValueThread()
{
+
+ // Get the server etag value (threaded).
PageData.Clear();
PageHeader.Clear();
@@ -21,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;
@@ -30,6 +50,12 @@ void CardDAV::GetServerETagValueThread()
conn = curl_easy_init();
+#if defined(__APPLE__)
+
+ SetConnectionObject(conn);
+
+#endif
+
struct CardDAVCURLPasser {
CardDAV *Data;
@@ -46,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;
@@ -91,9 +89,6 @@ void CardDAV::GetServerETagValueThread()
""
""
- //""
- //" "
- //""
""
""
"";
@@ -117,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){
@@ -138,6 +129,8 @@ void CardDAV::GetServerETagValueThread()
}
+#endif
+
claconncode = (curl_easy_perform(conn));
// If CURLE_PEER_FAILED_VERIFICATION is returned, retry without
@@ -183,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();
@@ -294,6 +286,8 @@ void CardDAV::GetServerETagValueThread()
curl_easy_cleanup(sslerrconn);
}
+
+#endif
// Sort out SSL error.
@@ -331,6 +325,12 @@ void CardDAV::GetServerETagValueThread()
sslerrconncode = (curl_easy_perform(sslerrconn));
+#if defined(__APPLE__)
+
+ SetConnectionObject(sslerrconn);
+
+#endif
+
SSLCertCol = BuildSSLCollection(sslerrconn);
SSLCertCol.SuccessCode = 1;
@@ -341,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);
@@ -353,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);
@@ -385,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));
@@ -579,6 +571,8 @@ void CardDAV::GetServerETagValueThread()
void CardDAV::GetServerETagValue(){
+ // Get the server etag value.
+
std::thread ConnectThread(&CardDAV::GetServerETagValueThread, this);
ConnectThread.detach();