X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;ds=sidebyside;f=source%2Fcarddav%2Fcarddav-connect.cpp;h=a2654972f368cfa82763546090a02d2a8cec10d0;hb=7195b19cb9b6bac69a55acdffabaec237dc67e78;hp=d759cdec0be235373642486335edb849a245ba78;hpb=911611528b36f56f7de9b6bf027b4c2a1a54df00;p=xestiaab%2F.git
diff --git a/source/carddav/carddav-connect.cpp b/source/carddav/carddav-connect.cpp
index d759cde..a265497 100644
--- a/source/carddav/carddav-connect.cpp
+++ b/source/carddav/carddav-connect.cpp
@@ -1,3 +1,21 @@
+// carddav-connect.cpp - CardDAV Object - Connect 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 @@
bool CardDAV::Connect(){
+ // Connect to the CardDAV server.
+
PageData.Clear();
PageHeader.Clear();
@@ -52,22 +72,6 @@ bool CardDAV::Connect(){
// 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));
-
- */
-
if (ServerSSL){
union {
@@ -80,6 +84,15 @@ bool CardDAV::Connect(){
// Setup two initial connections and attempt to get the certificate data.
curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);
curl_easy_setopt(conn, CURLOPT_CERTINFO, 1);
conncode = (curl_easy_perform(conn));
@@ -109,6 +122,8 @@ bool CardDAV::Connect(){
}
+ ServerAddressSSL.append("principals/");
+
curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));
curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);
curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
@@ -119,6 +134,7 @@ bool CardDAV::Connect(){
curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);
curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);
curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);
+ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "OPTIONS");
curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);
curl_easy_setopt(conn, CURLOPT_CERTINFO, 1);
@@ -127,6 +143,12 @@ bool CardDAV::Connect(){
curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 0L);
}
+#if defined(__APPLE__) || defined(__WIN32__)
+
+ SetConnectionObject(conn);
+
+#endif
+
conncode = (curl_easy_perform(conn));
ptr.certdata = NULL;