diff -Naur evolution-data-server-1.8.2/calendar/backends/caldav/e-cal-backend-caldav.c evolution-data-server-1.8.2-ju/calendar/backends/caldav/e-cal-backend-caldav.c
--- evolution-data-server-1.8.2/calendar/backends/caldav/e-cal-backend-caldav.c	2006-07-24 16:09:12.000000000 +0300
+++ evolution-data-server-1.8.2-ju/calendar/backends/caldav/e-cal-backend-caldav.c	2007-01-08 15:30:11.000000000 +0200
@@ -625,10 +625,13 @@
 	xmlDocPtr          doc;
 	int                i, n;
 	gboolean           res;
+	const SoupUri 	  *uri_base;
 
 	g_return_val_if_fail (soup_message != NULL, FALSE);
 	g_return_val_if_fail (objs != NULL || len != NULL, FALSE);
 
+        uri_base = soup_message_get_uri(soup_message);
+
 	res = TRUE;
 	doc = xmlReadMemory (soup_message->response.body, 
 			     soup_message->response.length, 
@@ -664,13 +667,23 @@
 	for (i = 0; i < n;i++) {
 		CalDAVObject *object;
 		xmlXPathObjectPtr xpres;
-		
+ 	        SoupUri *uri;
+
 		object = *objs + i;
 		/* see if we got a status child in the response element */
 
 		xpres = xpath_eval (xpctx, XPATH_HREF, i + 1);
 		object->href = xp_object_get_string (xpres);
 
+		/* test if uri is relative */
+                uri = soup_uri_new(object->href);
+                if (uri == NULL) {
+                	uri = soup_uri_new_with_base(uri_base, object->href);
+                	g_free (object->href);
+                	object->href = soup_uri_to_string(uri, FALSE);
+                }
+               	soup_uri_free(uri);
+ 
 		xpres = xpath_eval (xpctx,XPATH_STATUS , i + 1);
 		object->status = xp_object_get_status (xpres);
 
