[evolution-ews] Bug #661979 - Crash in e_ews_connection_sync_folder_items_start



commit 4c274860f46ca189532fbdfe50fcca54e9243739
Author: Milan Crha <mcrha redhat com>
Date:   Mon Apr 23 09:00:04 2012 +0200

    Bug #661979 - Crash in e_ews_connection_sync_folder_items_start

 src/addressbook/e-book-backend-ews.c |   45 +++++++----
 src/calendar/e-cal-backend-ews.c     |   96 ++++++++++++++++-------
 src/server/e-ews-connection.c        |  143 +++++++++++++++++++++++++++++++++-
 3 files changed, 238 insertions(+), 46 deletions(-)
---
diff --git a/src/addressbook/e-book-backend-ews.c b/src/addressbook/e-book-backend-ews.c
index b1b1496..c3a7386 100644
--- a/src/addressbook/e-book-backend-ews.c
+++ b/src/addressbook/e-book-backend-ews.c
@@ -62,7 +62,7 @@
 
 G_DEFINE_TYPE (EBookBackendEws, e_book_backend_ews, E_TYPE_BOOK_BACKEND)
 
-static gboolean ebews_fetch_items (EBookBackendEws *ebews,  GSList *items, gboolean store_to_cache, GSList **vcards, GError **error);
+static gboolean ebews_fetch_items (EBookBackendEws *ebews,  GSList *items, gboolean store_to_cache, GSList **vcards, GCancellable *cancellable, GError **error);
 
 typedef struct {
 	GCond *cond;
@@ -98,6 +98,7 @@ struct _EBookBackendEwsPrivate {
 	SyncDelta *dlock;
 
 	ECredentials *credentials;
+	GCancellable *cancellable;
 };
 
 /* using this for backward compatibility with E_DATA_BOOK_MODE */
@@ -1382,10 +1383,10 @@ e_book_backend_ews_get_contact_list (EBookBackend *backend,
 							EWS_FOLDER_TYPE_CONTACTS,
 							&includes_last_item,
 							&items, (EwsConvertQueryCallback) (e_ews_query_to_restriction),
-							NULL, &error);
+							cancellable, &error);
 
 		/*we have got Id for items lets fetch them using getitem operation*/
-		ebews_fetch_items (ebews, items, FALSE, &vcard_list, &error);
+		ebews_fetch_items (ebews, items, FALSE, &vcard_list, cancellable, &error);
 		convert_error_to_edb_error (&error);
 		e_data_book_respond_get_contact_list (book, opid, error, vcard_list);
 
@@ -1783,17 +1784,15 @@ ebews_start_gal_sync (gpointer data)
 	GSList *full_l = NULL;
 	gboolean ret = TRUE;
 	gchar *uncompressed_filename = NULL;
-	GCancellable *cancellable;
 
 	cbews = (EBookBackendEws *) data;
 	priv = cbews->priv;
 
-	cancellable = g_cancellable_new ();
 	oab_cnc = e_ews_connection_new (priv->oab_url, priv->username, priv->password, NULL, NULL, NULL);
 
 	d(printf ("Ewsgal: Fetching oal full details file \n");)
 
-	if (!e_ews_connection_get_oal_detail (oab_cnc, priv->folder_id, "Full", &full_l, cancellable, &error)) {
+	if (!e_ews_connection_get_oal_detail (oab_cnc, priv->folder_id, "Full", &full_l, priv->cancellable, &error)) {
 		ret = FALSE;
 		goto exit;
 	}
@@ -1804,7 +1803,7 @@ ebews_start_gal_sync (gpointer data)
 		gchar *seq;
 
 		d(printf ("Ewsgal: Downloading full gal \n");)
-		uncompressed_filename = ews_download_full_gal (cbews, full, cancellable, &error);
+		uncompressed_filename = ews_download_full_gal (cbews, full, priv->cancellable, &error);
 		if (error) {
 			ret = FALSE;
 			goto exit;
@@ -1818,7 +1817,7 @@ ebews_start_gal_sync (gpointer data)
 		}
 
 		d(printf ("Ewsgal: Replacing old gal with new gal contents in db \n");)
-		ret = ews_replace_gal_in_db (cbews, uncompressed_filename, cancellable, &error);
+		ret = ews_replace_gal_in_db (cbews, uncompressed_filename, priv->cancellable, &error);
 		if (!ret)
 			goto exit;
 
@@ -2093,6 +2092,7 @@ ebews_fetch_items (EBookBackendEws *ebews,
                    GSList *items,
                    gboolean store_to_cache,
                    GSList **vcards,
+		   GCancellable *cancellable,
                    GError **error)
 {
 	EBookBackendEwsPrivate *priv;
@@ -2126,7 +2126,7 @@ ebews_fetch_items (EBookBackendEws *ebews,
 			(cnc, EWS_PRIORITY_MEDIUM,
 			 contact_item_ids, "Default", CONTACT_ITEM_PROPS,
 			 FALSE, NULL, &new_items, NULL, NULL,
-			 NULL, error);
+			 cancellable, error);
 	if (*error)
 		goto cleanup;
 
@@ -2144,7 +2144,7 @@ ebews_fetch_items (EBookBackendEws *ebews,
 			(cnc, EWS_PRIORITY_MEDIUM,
 			 dl_ids, "Default", NULL,
 			 FALSE, NULL, &new_items, NULL, NULL,
-			 NULL, error);
+			 cancellable, error);
 	if (*error)
 		goto cleanup;
 
@@ -2168,7 +2168,7 @@ ebews_fetch_items (EBookBackendEws *ebews,
 			goto cleanup;
 
 		d_name = e_ews_item_get_subject (item);
-		e_ews_connection_expand_dl (cnc, EWS_PRIORITY_MEDIUM, mb, &members, &includes_last, NULL, error);
+		e_ews_connection_expand_dl (cnc, EWS_PRIORITY_MEDIUM, mb, &members, &includes_last, priv->cancellable, error);
 		if (*error)
 			goto cleanup;
 
@@ -2229,7 +2229,7 @@ ebews_start_sync (gpointer data)
 							 "IdOnly", NULL,
 							 EWS_MAX_FETCH_COUNT, &includes_last_item,
 							 &items_created, &items_updated,
-							 &items_deleted, NULL, &error);
+							 &items_deleted, priv->cancellable, &error);
 
 		if (error)
 			break;
@@ -2238,7 +2238,7 @@ ebews_start_sync (gpointer data)
 			ebews_sync_deleted_items (ebews, items_deleted, &error);
 
 		if (items_created)
-			ebews_fetch_items (ebews, items_created, TRUE, NULL, &error);
+			ebews_fetch_items (ebews, items_created, TRUE, NULL, priv->cancellable, &error);
 
 		if (error) {
 			if (items_updated) {
@@ -2250,7 +2250,7 @@ ebews_start_sync (gpointer data)
 		}
 
 		if (items_updated)
-			ebews_fetch_items (ebews, items_updated, TRUE, NULL, &error);
+			ebews_fetch_items (ebews, items_updated, TRUE, NULL, priv->cancellable, &error);
 
 		if (error)
 			break;
@@ -2659,7 +2659,7 @@ e_book_backend_ews_authenticate_user (EBookBackend *backend,
 		fid->id = g_strdup ("contacts");
 		fid->is_distinguished_id = TRUE;
 		ids = g_slist_append (ids, fid);
-		e_ews_connection_get_folder (cnc, EWS_PRIORITY_MEDIUM, "Default", NULL, ids, &folders, NULL, &error);
+		e_ews_connection_get_folder (cnc, EWS_PRIORITY_MEDIUM, "Default", NULL, ids, &folders, cancellable, &error);
 
 		e_ews_folder_free_fid (fid);
 		g_slist_free (ids);
@@ -2700,6 +2700,12 @@ e_book_backend_ews_notify_online_cb (EBookBackend *backend,
 	ebews->priv->is_online = is_online;
 
 	if (e_book_backend_is_opened (backend)) {
+		if (ebews->priv->cancellable) {
+			g_cancellable_cancel (ebews->priv->cancellable);
+			g_object_unref (ebews->priv->cancellable);
+			ebews->priv->cancellable = NULL;
+		}
+
 		if (!is_online) {
 			e_book_backend_notify_readonly (backend, TRUE);
 			e_book_backend_notify_online (backend, FALSE);
@@ -2708,6 +2714,8 @@ e_book_backend_ews_notify_online_cb (EBookBackend *backend,
 				ebews->priv->cnc = NULL;
 			}
 		} else {
+			ebews->priv->cancellable = g_cancellable_new ();
+
 			e_book_backend_notify_readonly (backend, !ebews->priv->is_writable);
 			e_book_backend_notify_online (backend, TRUE);
 			e_book_backend_notify_auth_required (backend, TRUE, NULL);
@@ -2815,6 +2823,12 @@ e_book_backend_ews_dispose (GObject *object)
 	bews = E_BOOK_BACKEND_EWS (object);
 	priv = bews->priv;
 
+	if (priv->cancellable) {
+		g_cancellable_cancel (priv->cancellable);
+		g_object_unref (priv->cancellable);
+		priv->cancellable = NULL;
+	}
+
 	if (priv->cnc) {
 		g_object_unref (priv->cnc);
 		priv->cnc = NULL;
@@ -2921,6 +2935,7 @@ e_book_backend_ews_init (EBookBackendEws *backend)
 
 	bews->priv = priv;
 	g_static_rec_mutex_init (&priv->rec_mutex);
+	priv->cancellable = g_cancellable_new ();
 
 	g_signal_connect (
 		bews, "notify::online",
diff --git a/src/calendar/e-cal-backend-ews.c b/src/calendar/e-cal-backend-ews.c
index 777c378..9e18439 100644
--- a/src/calendar/e-cal-backend-ews.c
+++ b/src/calendar/e-cal-backend-ews.c
@@ -88,6 +88,7 @@ struct _ECalBackendEwsPrivate {
 	GHashTable *item_id_hash;
 
 	ECredentials *credentials;
+	GCancellable *cancellable;
 };
 
 #define PRIV_LOCK(p)   (g_static_rec_mutex_lock (&(p)->rec_mutex))
@@ -172,6 +173,12 @@ switch_offline (ECalBackendEws *cbews)
 		priv->refresh_timeout = 0;
 	}
 
+	if (priv->cancellable) {
+		g_cancellable_cancel (priv->cancellable);
+		g_object_unref (priv->cancellable);
+		priv->cancellable = NULL;
+	}
+
 	if (priv->cnc) {
 		g_object_unref (priv->cnc);
 		priv->cnc = NULL;
@@ -359,7 +366,7 @@ e_cal_backend_ews_discard_alarm (ECalBackend *backend,
 					     "AlwaysOverwrite", NULL,
 					     "SendToNone", NULL,
 					     clear_reminder_is_set, edad,
-					     ews_cal_discard_alarm_cb, NULL,
+					     ews_cal_discard_alarm_cb, priv->cancellable,
 					     edad);
 }
 
@@ -561,7 +568,7 @@ connect_to_server (ECalBackendEws *cbews,
 		fid = g_new0 (EwsFolderId, 1);
 		fid->id = g_strdup (priv->folder_id);
 		ids = g_slist_append (ids, fid);
-		e_ews_connection_get_folder (cnc, EWS_PRIORITY_MEDIUM, "Default", NULL, ids, &folders, NULL, &err);
+		e_ews_connection_get_folder (cnc, EWS_PRIORITY_MEDIUM, "Default", NULL, ids, &folders, priv->cancellable, &err);
 
 		e_ews_folder_free_fid (fid);
 		g_slist_free (ids);
@@ -1046,7 +1053,7 @@ e_cal_backend_ews_remove_object (ECalBackend *backend,
 
 	e_ews_connection_delete_item_start (priv->cnc, EWS_PRIORITY_MEDIUM, &remove_data->item_id, index,
 					     EWS_HARD_DELETE, EWS_SEND_TO_NONE, EWS_ALL_OCCURRENCES,
-					     ews_cal_remove_object_cb, NULL,
+					     ews_cal_remove_object_cb, priv->cancellable,
 					     remove_data);
 	return;
 
@@ -1440,7 +1447,7 @@ ews_create_attachments_cb (GObject *object,
 						     convert_component_to_updatexml,
 						     modify_data,
 						     ews_cal_modify_object_cb,
-						     NULL,
+						     priv->cancellable,
 						     modify_data);
 	}
 
@@ -1498,7 +1505,7 @@ ews_create_object_cb (GObject *object,
 			"calendar:UID",
 			FALSE, NULL,
 			&items_req,
-			NULL, NULL, NULL, &error);
+			NULL, NULL, priv->cancellable, &error);
 		if (!res && error != NULL) {
 			if (items_req)
 				g_slist_free_full (items_req, g_object_unref);
@@ -1537,7 +1544,7 @@ ews_create_object_cb (GObject *object,
 		e_cal_component_get_attachment_list (create_data->comp, &attachments);
 		e_ews_connection_create_attachments_start (cnc, EWS_PRIORITY_MEDIUM,
 							   item_id, attachments,
-							   ews_create_attachments_cb, NULL, attach_data);
+							   ews_create_attachments_cb, priv->cancellable, attach_data);
 
 		for (i = attachments; i; i = i->next) g_free (i->data);
 		g_slist_free (attachments);
@@ -2294,7 +2301,7 @@ e_cal_backend_ews_modify_object (ECalBackend *backend,
 
 		e_ews_connection_create_attachments_start (priv->cnc, EWS_PRIORITY_MEDIUM,
 							   item_id, added_attachments,
-							   ews_create_attachments_cb, NULL, attach_data);
+							   ews_create_attachments_cb, cancellable, attach_data);
 
 		g_slist_free (added_attachments);
 		g_free (item_id);
@@ -2874,15 +2881,13 @@ ews_get_attachments_ready_callback (GObject *object,
 
 	ids = e_ews_connection_get_attachments_finish	(cnc, res, &uris, &error);
 
-	if (error != NULL) {
-		g_clear_error (&error);
-		return;
-	}
-
 	comp_att = att_data->comp;
 	cbews = att_data->cbews;
 	itemid = att_data->itemid;
 
+	if (error)
+		goto exit;
+
 	e_cal_component_set_attachment_list (comp_att, uris);
 
 	icalcomp = e_cal_component_get_icalcomponent (comp_att);
@@ -2909,11 +2914,14 @@ ews_get_attachments_ready_callback (GObject *object,
 		PRIV_UNLOCK (cbews->priv);
 	}
 
+ exit:
+	g_clear_error (&error);
 	g_slist_foreach (uris, (GFunc) g_free, NULL);
 	g_slist_free (uris);
 	g_free (itemid);
 	g_object_unref (att_data->comp);
 	g_free (att_data);
+	g_object_unref (cbews);
 }
 
 static void
@@ -2933,7 +2941,7 @@ ews_get_attachments (ECalBackendEws *cbews,
 		item_id = e_ews_item_get_id (item);
 		att_data = g_new0 (EwsAttachmentData, 1);
 		att_data->comp = g_hash_table_lookup (cbews->priv->item_id_hash, item_id->id);
-		att_data->cbews = cbews;
+		att_data->cbews = g_object_ref (cbews);
 		att_data->itemid = g_strdup (item_id->id);
 		e_cal_component_get_uid (att_data->comp, &uid);
 
@@ -2945,7 +2953,7 @@ ews_get_attachments (ECalBackendEws *cbews,
 							TRUE,
 							ews_get_attachments_ready_callback,
 							NULL, NULL,
-							NULL, att_data);
+							cbews->priv->cancellable, att_data);
 	}
 
 }
@@ -3074,7 +3082,7 @@ add_item_to_cache (ECalBackendEws *cbews,
 			/* get delegator mail box*/
 			e_ews_connection_resolve_names	(priv->cnc, EWS_PRIORITY_MEDIUM, task_owner,
 						 EWS_SEARCH_AD, NULL, FALSE, &mailboxes, NULL,
-						 &includes_last_item, NULL, &error);
+						 &includes_last_item, priv->cancellable, &error);
 
 			for (l = mailboxes; l != NULL; l = g_slist_next (l)) {
 				EwsMailbox *mb = l->data;
@@ -3345,7 +3353,7 @@ ews_cal_get_items_ready_cb (GObject *obj,
 			e_ews_connection_get_items_start (g_object_ref (cnc), EWS_PRIORITY_MEDIUM,
 					modified_occurrences,
 					"IdOnly", "item:Attachments item:HasAttachments item:MimeContent calendar:TimeZone calendar:UID calendar:Resources calendar:ModifiedOccurrences calendar:RequiredAttendees calendar:OptionalAttendees",
-					FALSE, NULL, ews_cal_get_items_ready_cb, NULL, NULL, NULL,
+					FALSE, NULL, ews_cal_get_items_ready_cb, NULL, NULL, priv->cancellable,
 					(gpointer) sub_sync_data);
 
 			g_object_unref (cnc);
@@ -3373,13 +3381,14 @@ ews_cal_get_items_ready_cb (GObject *obj,
 						 "IdOnly", NULL,
 						 EWS_MAX_FETCH_COUNT,
 						 ews_cal_sync_items_ready_cb,
-						 NULL, g_object_ref (cbews));
+						 priv->cancellable, g_object_ref (cbews));
 
 exit:
 	g_object_unref (sync_data->cbews);
 	g_free (sync_data->master_uid);
 	g_free (sync_data->sync_state);
 	g_free (sync_data);
+	g_object_unref (cbews);
 }
 
 static void
@@ -3406,8 +3415,15 @@ ews_cal_sync_items_ready_cb (GObject *obj,
 							 &items_created, &items_updated,
 							 &items_deleted, &error);
 
+	if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) ||
+	    g_error_matches (error, EWS_CONNECTION_ERROR, EWS_CONNECTION_ERROR_CANCELLED)) {
+		g_clear_error (&error);
+		g_object_unref (cbews);
+		return;
+	}
+
 	/*FIXME invoke a dummy request in authenticate user to ensure we have a valid connection to avoid this mess */
-	if (!(error && error->domain == EWS_CONNECTION_ERROR && error->code == EWS_CONNECTION_ERROR_AUTHENTICATION_FAILED))
+	if (!g_error_matches (error, EWS_CONNECTION_ERROR, EWS_CONNECTION_ERROR_AUTHENTICATION_FAILED))
 		e_cal_backend_notify_readonly (E_CAL_BACKEND (cbews), FALSE);
 
 	if (error != NULL) {
@@ -3464,7 +3480,7 @@ ews_cal_sync_items_ready_cb (GObject *obj,
 						 "IdOnly", NULL,
 						 EWS_MAX_FETCH_COUNT,
 						 ews_cal_sync_items_ready_cb,
-						 NULL, g_object_ref (cbews));
+						 priv->cancellable, g_object_ref (cbews));
 		g_free (sync_state);
 		goto exit;
 	}
@@ -3484,7 +3500,7 @@ ews_cal_sync_items_ready_cb (GObject *obj,
 						  "item:Attachments item:HasAttachments item:MimeContent calendar:TimeZone calendar:UID calendar:Resources calendar:ModifiedOccurrences calendar:RequiredAttendees calendar:OptionalAttendees",
 						  FALSE, NULL,
 						  ews_cal_get_items_ready_cb,
-						  NULL, NULL, NULL,
+						  NULL, NULL, priv->cancellable,
 						  (gpointer) sync_data);
 
 	if (task_item_ids)
@@ -3495,7 +3511,7 @@ ews_cal_sync_items_ready_cb (GObject *obj,
 						  FALSE,
 						  NULL,
 						  ews_cal_get_items_ready_cb,
-						  NULL, NULL, NULL,
+						  NULL, NULL, priv->cancellable,
 						  (gpointer) sync_data);
 
 exit:
@@ -3539,7 +3555,7 @@ ews_start_sync (gpointer data)
 						 "IdOnly", NULL,
 						 EWS_MAX_FETCH_COUNT,
 						 ews_cal_sync_items_ready_cb,
-						 NULL, g_object_ref (cbews));
+						 priv->cancellable, g_object_ref (cbews));
 	return TRUE;
 }
 
@@ -3882,11 +3898,18 @@ e_cal_backend_ews_notify_online_cb (ECalBackend *backend,
 	priv->is_online = is_online;
 
 	if (is_online) {
+		if (priv->cancellable) {
+			g_cancellable_cancel (priv->cancellable);
+			g_object_unref (priv->cancellable);
+			priv->cancellable = NULL;
+		}
+		priv->cancellable = g_cancellable_new ();
+
 		priv->read_only = FALSE;
 		e_cal_backend_notify_online (backend, TRUE);
 		e_cal_backend_notify_readonly (backend, priv->read_only);
 		if (e_cal_backend_is_opened (backend))
-			      e_cal_backend_notify_auth_required (backend, TRUE, priv->credentials);
+		      e_cal_backend_notify_auth_required (backend, TRUE, priv->credentials);
 	} else {
 		switch_offline (E_CAL_BACKEND_EWS (backend));
 		e_cal_backend_notify_readonly (backend, priv->read_only);
@@ -3899,6 +3922,26 @@ e_cal_backend_ews_notify_online_cb (ECalBackend *backend,
 static void
 e_cal_backend_ews_dispose (GObject *object)
 {
+	ECalBackendEws *cbews;
+	ECalBackendEwsPrivate *priv;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (E_IS_CAL_BACKEND_EWS (object));
+
+	cbews = E_CAL_BACKEND_EWS (object);
+	priv = cbews->priv;
+
+	if (priv->cancellable) {
+		g_cancellable_cancel (priv->cancellable);
+		g_object_unref (priv->cancellable);
+		priv->cancellable = NULL;
+	}
+
+	if (priv->cnc) {
+		g_object_unref (priv->cnc);
+		priv->cnc = NULL;
+	}
+
 	if (G_OBJECT_CLASS (parent_class)->dispose)
 		(* G_OBJECT_CLASS (parent_class)->dispose) (object);
 }
@@ -3919,12 +3962,6 @@ e_cal_backend_ews_finalize (GObject *object)
 	/* Clean up */
 	g_static_rec_mutex_free (&priv->rec_mutex);
 
-	/* TODO Cancel all the server requests */
-	if (priv->cnc) {
-		g_object_unref (priv->cnc);
-		priv->cnc = NULL;
-	}
-
 	if (priv->store) {
 		g_object_unref (priv->store);
 		priv->store = NULL;
@@ -3982,6 +4019,7 @@ e_cal_backend_ews_init (ECalBackendEws *cbews)
 						 (GDestroyNotify) g_free,
 						 (GDestroyNotify) g_object_unref);
 	priv->default_zone = icaltimezone_get_utc_timezone ();
+	priv->cancellable = g_cancellable_new ();
 
 	cbews->priv = priv;
 
diff --git a/src/server/e-ews-connection.c b/src/server/e-ews-connection.c
index c520bb4..870fecd 100644
--- a/src/server/e-ews-connection.c
+++ b/src/server/e-ews-connection.c
@@ -310,6 +310,8 @@ static void ews_trigger_next_request (EEwsConnection *cnc)
 {
 	GSource *source;
 
+	g_return_if_fail (cnc != NULL);
+
 	source = g_idle_source_new ();
 	g_source_set_priority (source, G_PRIORITY_DEFAULT);
 	g_source_set_callback (source, ews_next_request, cnc, NULL);
@@ -347,6 +349,9 @@ static void
 ews_active_job_done (EEwsConnection *cnc,
                      EwsNode *ews_node)
 {
+	g_return_if_fail (cnc != NULL);
+	g_return_if_fail (ews_node != NULL);
+
 	QUEUE_LOCK (cnc);
 
 	cnc->priv->active_job_queue = g_slist_remove (cnc->priv->active_job_queue, ews_node);
@@ -403,6 +408,8 @@ ews_connection_queue_request (EEwsConnection *cnc,
 {
 	EwsNode *node;
 
+	g_return_if_fail (cnc != NULL);
+
 	node = ews_node_new ();
 	node->msg = msg;
 	node->pri = pri;
@@ -1100,6 +1107,8 @@ ews_connection_authenticate (SoupSession *sess,
 {
 	EEwsConnection *cnc = data;
 
+	g_return_if_fail (cnc != NULL);
+
 	if (retrying) {
 		g_free (cnc->priv->password);
 		cnc->priv->password = NULL;
@@ -1135,6 +1144,8 @@ e_ews_connection_authenticate (EEwsConnection *cnc,
                                const gchar *passwd,
                                GError *error)
 {
+	g_return_if_fail (cnc != NULL);
+
 	if (error) {
 		g_warning ("Auth error: %s", error->message);
 		g_clear_error (&error);
@@ -1811,6 +1822,8 @@ e_ews_connection_get_oal_list_start (EEwsConnection *cnc,
 	SoupMessage *msg;
 	struct _oal_req_data *data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_get_msg_for_url (cnc->priv->uri, NULL);
 
 	simple = g_simple_async_result_new (G_OBJECT (cnc),
@@ -1838,6 +1851,8 @@ e_ews_connection_get_oal_list_finish (EEwsConnection *cnc,
 {
 	GSimpleAsyncResult *simple;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_get_oal_list_start),
@@ -1865,6 +1880,8 @@ e_ews_connection_get_oal_detail_start (EEwsConnection *cnc,
 	SoupMessage *msg;
 	struct _oal_req_data *data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_get_msg_for_url (cnc->priv->uri, NULL);
 
 	simple = g_simple_async_result_new (G_OBJECT (cnc),
@@ -1895,6 +1912,7 @@ e_ews_connection_get_oal_detail_finish (EEwsConnection *cnc,
 {
 	GSimpleAsyncResult *simple;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_get_oal_detail_start),
@@ -1934,6 +1952,8 @@ e_ews_connection_get_oal_detail (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -2061,6 +2081,8 @@ e_ews_connection_download_oal_file_start (EEwsConnection *cnc,
 	SoupMessage *msg;
 	struct _oal_req_data *data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_get_msg_for_url (cnc->priv->uri, NULL);
 
 	simple = g_simple_async_result_new (G_OBJECT (cnc),
@@ -2097,6 +2119,7 @@ e_ews_connection_download_oal_file_finish (EEwsConnection *cnc,
 {
 	GSimpleAsyncResult *simple;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 			g_simple_async_result_is_valid (
 				result, G_OBJECT (cnc), e_ews_connection_download_oal_file_start),
@@ -2121,6 +2144,8 @@ e_ews_connection_download_oal_file (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -2147,7 +2172,7 @@ void
 e_ews_connection_set_mailbox (EEwsConnection *cnc,
                               const gchar *email)
 {
-
+	g_return_if_fail (cnc != NULL);
 	g_return_if_fail (email != NULL);
 
 	g_free (cnc->priv->email);
@@ -2290,6 +2315,8 @@ e_ews_connection_sync_folder_items_start (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "SyncFolderItems", NULL, NULL, EWS_EXCHANGE_2007_SP1);
 	e_soap_message_start_element (msg, "ItemShape", "messages", NULL);
 	e_ews_message_write_string_parameter (msg, "BaseShape", NULL, default_props);
@@ -2348,6 +2375,7 @@ e_ews_connection_sync_folder_items_finish (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_sync_folder_items_start),
@@ -2386,6 +2414,8 @@ e_ews_connection_sync_folder_items (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -2471,6 +2501,8 @@ e_ews_connection_find_folder_items_start (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "FindItem", "Traversal", "Shallow", EWS_EXCHANGE_2007_SP1);
 	e_soap_message_start_element (msg, "ItemShape", "messages", NULL);
 	e_ews_message_write_string_parameter (msg, "BaseShape", NULL, default_props);
@@ -2521,6 +2553,7 @@ e_ews_connection_find_folder_items_finish (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_find_folder_items_start),
@@ -2556,6 +2589,8 @@ e_ews_connection_find_folder_items (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -2591,6 +2626,8 @@ e_ews_connection_sync_folder_hierarchy_start (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "SyncFolderHierarchy", NULL, NULL, EWS_EXCHANGE_2007_SP1);
 	e_soap_message_start_element (msg, "FolderShape", "messages", NULL);
 	e_ews_message_write_string_parameter (msg, "BaseShape", NULL, "AllProperties");
@@ -2627,6 +2664,7 @@ e_ews_connection_sync_folder_hierarchy_finish (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_sync_folder_hierarchy_start),
@@ -2661,6 +2699,8 @@ e_ews_connection_sync_folder_hierarchy (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -2704,6 +2744,8 @@ e_ews_connection_get_items_start (EEwsConnection *cnc,
 	EwsAsyncData *async_data;
 	const GSList *l;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "GetItem", NULL, NULL, EWS_EXCHANGE_2007_SP1);
 
 	if (progress_fn && progress_data)
@@ -2772,6 +2814,7 @@ e_ews_connection_get_items_finish (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_get_items_start),
@@ -2805,6 +2848,8 @@ e_ews_connection_get_items (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -2885,6 +2930,8 @@ e_ews_connection_delete_items_start (EEwsConnection *cnc,
 	EwsAsyncData *async_data;
 	GSList *l;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "DeleteItem",
 					     "DeleteType", ews_delete_type_to_str (delete_type), EWS_EXCHANGE_2007_SP1);
 
@@ -2935,6 +2982,8 @@ e_ews_connection_delete_item_start (EEwsConnection *cnc,
 	EwsAsyncData *async_data;
 	gchar buffer[32];
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "DeleteItem",
 					     "DeleteType", ews_delete_type_to_str (delete_type), EWS_EXCHANGE_2007_SP1);
 
@@ -2988,6 +3037,7 @@ e_ews_connection_delete_items_finish (EEwsConnection *cnc,
 {
 	GSimpleAsyncResult *simple;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_delete_items_start),
@@ -3014,6 +3064,8 @@ e_ews_connection_delete_items (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -3048,6 +3100,8 @@ e_ews_connection_delete_item (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -3085,6 +3139,8 @@ e_ews_connection_update_items_start (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "UpdateItem",
 					     NULL, NULL, EWS_EXCHANGE_2007_SP1);
 
@@ -3135,6 +3191,7 @@ e_ews_connection_update_items_finish (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_update_items_start),
@@ -3173,6 +3230,8 @@ e_ews_connection_update_items (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -3211,6 +3270,8 @@ e_ews_connection_create_items_start (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "CreateItem",
 					     NULL, NULL, EWS_EXCHANGE_2007_SP1);
 
@@ -3258,6 +3319,7 @@ e_ews_connection_create_items_finish (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_create_items_start),
@@ -3288,6 +3350,8 @@ e_ews_connection_create_items (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -3343,6 +3407,8 @@ e_ews_connection_resolve_names_start (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "ResolveNames", NULL, NULL, EWS_EXCHANGE_2007_SP1);
 
 	e_soap_message_add_attribute (msg, "SearchScope", get_search_scope_str (scope), NULL, NULL);
@@ -3386,6 +3452,7 @@ e_ews_connection_resolve_names_finish (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_resolve_names_start),
@@ -3424,6 +3491,8 @@ e_ews_connection_resolve_names (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -3458,6 +3527,8 @@ e_ews_connection_expand_dl_start (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "ExpandDL", NULL, NULL, EWS_EXCHANGE_2007_SP1);
 
 	e_soap_message_start_element (msg, "Mailbox", "messages", NULL);
@@ -3502,6 +3573,7 @@ e_ews_connection_expand_dl_finish (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_expand_dl_start),
@@ -3532,6 +3604,8 @@ e_ews_connection_expand_dl (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -3564,6 +3638,8 @@ e_ews_connection_update_folder_start (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "UpdateFolder",
 					     NULL, NULL, EWS_EXCHANGE_2007_SP1);
 
@@ -3595,6 +3671,7 @@ e_ews_connection_update_folder_finish (EEwsConnection *cnc,
 {
 	GSimpleAsyncResult *simple;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_update_folder_start),
@@ -3619,6 +3696,8 @@ e_ews_connection_update_folder (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -3652,6 +3731,8 @@ e_ews_connection_move_folder_start (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "MoveFolder",
 					     NULL, NULL, EWS_EXCHANGE_2007_SP1);
 
@@ -3692,6 +3773,7 @@ e_ews_connection_move_folder_finish (EEwsConnection *cnc,
 {
 	GSimpleAsyncResult *simple;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_move_folder_start),
@@ -3716,6 +3798,8 @@ e_ews_connection_move_folder (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -3749,6 +3833,8 @@ e_ews_connection_get_folder_start (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "GetFolder",
 					     NULL, NULL, EWS_EXCHANGE_2007_SP1);
 
@@ -3789,6 +3875,7 @@ e_ews_connection_get_folder_finish (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_get_folder_start),
@@ -3818,6 +3905,8 @@ e_ews_connection_get_folder (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -3852,6 +3941,8 @@ e_ews_connection_create_folder_start (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "CreateFolder", NULL, NULL, EWS_EXCHANGE_2007_SP1);
 
 	e_soap_message_start_element (msg, "ParentFolderId", "messages", NULL);
@@ -3898,6 +3989,7 @@ e_ews_connection_create_folder_finish (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_create_folder_start),
@@ -3928,6 +4020,8 @@ e_ews_connection_create_folder (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -3967,6 +4061,8 @@ e_ews_connection_move_items_start (EEwsConnection *cnc,
 	EwsAsyncData *async_data;
 	GSList *l;
 
+	g_return_if_fail (cnc != NULL);
+
 	if (docopy)
 		msg = e_ews_message_new_with_header (cnc->priv->uri, "CopyItem",
 					     NULL, NULL, EWS_EXCHANGE_2007_SP1);
@@ -4009,6 +4105,7 @@ e_ews_connection_move_items_finish (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_move_items_start),
@@ -4038,6 +4135,8 @@ e_ews_connection_move_items (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -4057,7 +4156,6 @@ e_ews_connection_move_items (EEwsConnection *cnc,
 	return result;
 }
 
-void
 /**
  * e_ews_connection_delete_folder_start
  * @cnc:
@@ -4069,6 +4167,7 @@ void
  * @cancellable:
  * @user_data:
  **/
+void
 e_ews_connection_delete_folder_start (EEwsConnection *cnc,
                                       gint pri,
                                       const gchar *folder_id,
@@ -4082,6 +4181,8 @@ e_ews_connection_delete_folder_start (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "DeleteFolder", "DeleteType", delete_type, EWS_EXCHANGE_2007_SP1);
 
 	e_soap_message_start_element (msg, "FolderIds", "messages", NULL);
@@ -4118,6 +4219,7 @@ e_ews_connection_delete_folder_finish (EEwsConnection *cnc,
 {
 	GSimpleAsyncResult *simple;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_delete_folder_start),
@@ -4153,6 +4255,8 @@ e_ews_connection_delete_folder (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -4272,6 +4376,8 @@ e_ews_connection_create_attachments_start (EEwsConnection *cnc,
 	EwsAsyncData *async_data;
 	const GSList *l;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "CreateAttachment", NULL, NULL, EWS_EXCHANGE_2007_SP1);
 
 	e_soap_message_start_element (msg, "ParentItemId", "messages", NULL);
@@ -4313,6 +4419,7 @@ e_ews_connection_create_attachments_finish (EEwsConnection *cnc,
 	EwsAsyncData *async_data;
 	GSList *ids = NULL;
 
+	g_return_val_if_fail (cnc != NULL, NULL);
 	g_return_val_if_fail (
 			g_simple_async_result_is_valid (
 					result, G_OBJECT (cnc), e_ews_connection_create_attachments_start),
@@ -4342,6 +4449,8 @@ e_ews_connection_create_attachments (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	GSList *ids;
 
+	g_return_val_if_fail (cnc != NULL, NULL);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -4400,6 +4509,8 @@ e_ews_connection_delete_attachments_start (EEwsConnection *cnc,
 	EwsAsyncData *async_data;
 	const GSList *l;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "DeleteAttachment", NULL, NULL, EWS_EXCHANGE_2007_SP1);
 
 	/* start interation over all items to get the attachemnts */
@@ -4435,6 +4546,7 @@ e_ews_connection_delete_attachments_finish (EEwsConnection *cnc,
 	EwsAsyncData *async_data;
 	GSList *ids = NULL;
 
+	g_return_val_if_fail (cnc != NULL, NULL);
 	g_return_val_if_fail (
 			g_simple_async_result_is_valid (
 					result, G_OBJECT (cnc), e_ews_connection_delete_attachments_start),
@@ -4461,6 +4573,8 @@ e_ews_connection_delete_attachments (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	GSList *parents;
 
+	g_return_val_if_fail (cnc != NULL, NULL);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -4502,6 +4616,8 @@ e_ews_connection_get_attachments_start (EEwsConnection *cnc,
 	EwsAsyncData *async_data;
 	const GSList *l;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "GetAttachment", NULL, NULL, EWS_EXCHANGE_2007_SP1);
 
 	/* not sure why I need it, need to check */
@@ -4550,6 +4666,7 @@ e_ews_connection_get_attachments_finish (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_val_if_fail (cnc != NULL, NULL);
 	g_return_val_if_fail (
 			g_simple_async_result_is_valid (
 					result, G_OBJECT (cnc), e_ews_connection_get_attachments_start),
@@ -4582,6 +4699,8 @@ e_ews_connection_get_attachments (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	GSList *attachments_ids;
 
+	g_return_val_if_fail (cnc != NULL, NULL);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -4744,6 +4863,8 @@ e_ews_connection_get_free_busy_start (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "GetUserAvailabilityRequest",
 					     NULL, NULL, EWS_EXCHANGE_2007_SP1);
 
@@ -4773,6 +4894,7 @@ e_ews_connection_get_free_busy_finish (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 			      g_simple_async_result_is_valid (
 							      result, G_OBJECT (cnc), e_ews_connection_get_free_busy_start),
@@ -4800,6 +4922,8 @@ e_ews_connection_get_free_busy (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -4937,6 +5061,8 @@ e_ews_connection_get_delegate_start (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "GetDelegate", "IncludePermissions", include_permissions, EWS_EXCHANGE_2007_SP1);
 
 	e_soap_message_start_element (msg, "Mailbox", "messages", NULL);
@@ -4968,6 +5094,7 @@ e_ews_connection_get_delegate_finish (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_get_delegate_start),
@@ -5005,6 +5132,8 @@ e_ews_connection_get_delegate (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -5046,6 +5175,8 @@ e_ews_connection_get_oof_settings_start (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "GetUserOofSettingsRequest", NULL, NULL, EWS_EXCHANGE_2007_SP1);
 
 	e_soap_message_start_element (msg, "Mailbox", NULL, NULL);
@@ -5076,6 +5207,7 @@ e_ews_connection_get_oof_settings_finish (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_get_oof_settings_start),
@@ -5102,6 +5234,8 @@ e_ews_connection_get_oof_settings (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 
@@ -5144,6 +5278,8 @@ e_ews_connection_set_oof_settings_start (EEwsConnection *cnc,
 	gchar *start_tm = NULL, *end_tm = NULL;
 	GTimeVal *time_val;
 
+	g_return_if_fail (cnc != NULL);
+
 	msg = e_ews_message_new_with_header (cnc->priv->uri, "SetUserOofSettingsRequest", NULL, NULL, EWS_EXCHANGE_2007_SP1);
 
 	/*Set Mailbox to user Address we want to set*/
@@ -5205,6 +5341,7 @@ e_ews_connection_set_oof_settings_finish (EEwsConnection *cnc,
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
 	g_return_val_if_fail (
 		g_simple_async_result_is_valid (
 		result, G_OBJECT (cnc), e_ews_connection_set_oof_settings_start),
@@ -5229,6 +5366,8 @@ e_ews_connection_set_oof_settings (EEwsConnection *cnc,
 	EwsSyncData *sync_data;
 	gboolean result;
 
+	g_return_val_if_fail (cnc != NULL, FALSE);
+
 	sync_data = g_new0 (EwsSyncData, 1);
 	sync_data->eflag = e_flag_new ();
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]