evolution-data-server r10019 - in branches/gnome-2-24/calendar: . backends/http



Author: msuman
Date: Mon Feb  2 03:49:51 2009
New Revision: 10019
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=10019&view=rev

Log:
Patch from Petr Tomasek: Fix for bug #429317 (Use the relative URI returned if the server re-directs a request).

Modified:
   branches/gnome-2-24/calendar/ChangeLog
   branches/gnome-2-24/calendar/backends/http/e-cal-backend-http.c

Modified: branches/gnome-2-24/calendar/backends/http/e-cal-backend-http.c
==============================================================================
--- branches/gnome-2-24/calendar/backends/http/e-cal-backend-http.c	(original)
+++ branches/gnome-2-24/calendar/backends/http/e-cal-backend-http.c	Mon Feb  2 03:49:51 2009
@@ -241,6 +241,7 @@
 	icalcomponent *icalcomp, *subcomp;
 	icalcomponent_kind kind;
 	const char *newuri;
+	SoupURI *uri_parsed;
 	GHashTable *old_cache;
 	GList *comps_in_cache;
 
@@ -254,9 +255,22 @@
 		newuri = soup_message_headers_get (msg->response_headers,
 						   "Location");
 
-		d(g_message ("Redirected to %s\n", newuri));
+		d(g_message ("Redirected from %s to %s\n", priv->uri, newuri));
 
 		if (newuri) {
+			if (newuri[0]=='/') {
+				g_warning ("Hey! Relative URI returned! Working around...\n");
+
+				uri_parsed = soup_uri_new (priv->uri);
+				soup_uri_set_path (uri_parsed, newuri);
+				soup_uri_set_query (uri_parsed, NULL);
+				// g_free(newuri);
+
+				newuri = soup_uri_to_string (uri_parsed, FALSE);
+				g_message ("Translated URI: %s\n", newuri);
+				soup_uri_free (uri_parsed);
+			}
+
 			g_free (priv->uri);
 
 			priv->uri = webcal_to_http_method (newuri, FALSE);
@@ -483,6 +497,11 @@
 
 	/* create message to be sent to server */
 	soup_message = soup_message_new (SOUP_METHOD_GET, priv->uri);
+	if (!soup_message) {
+		g_critical ("Cannot fetch the webcal!\n");
+		return TRUE;
+	}
+
 	soup_message_headers_append (soup_message->request_headers, "User-Agent",
 				     "Evolution/" VERSION);
 	soup_message_set_flags (soup_message, SOUP_MESSAGE_NO_REDIRECT);



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