Index: totem-mozilla-viewer.c
===================================================================
RCS file: /cvs/gnome/totem/src/totem-mozilla-viewer.c,v
retrieving revision 1.33
diff -u -p -r1.33 totem-mozilla-viewer.c
--- totem-mozilla-viewer.c	23 Apr 2006 23:53:42 -0000	1.33
+++ totem-mozilla-viewer.c	12 May 2006 11:55:22 -0000
@@ -38,6 +38,7 @@
 #include "bacon-volume.h"
 //FIXME damn build system!
 #include "totem-interface.c"
+#include "video-utils.h"
 
 GtkWidget *totem_volume_create (void);
 
@@ -322,11 +323,19 @@ on_play_pause (GtkWidget *widget, TotemE
 static void
 on_got_redirect (GtkWidget *bvw, const char *mrl, TotemEmbedded *emb)
 {
+	gchar *new_filename;
+
 	g_message ("url: %s", emb->orig_filename);
 	g_message ("redirect: %s", mrl);
 
+	if (emb->orig_filename)
+		new_filename = totem_resolve_relative_link (emb->orig_filename, mrl);
+	else
+		new_filename = totem_resolve_relative_link (emb->filename, mrl);
+
 	g_free (emb->filename);
-	emb->filename = g_strdup (mrl);
+	emb->filename = new_filename;
+
 	bacon_video_widget_close (emb->bvw);
 	totem_embedded_set_state (emb, STATE_STOPPED);
 
Index: totem.c
===================================================================
RCS file: /cvs/gnome/totem/src/totem.c,v
retrieving revision 1.497
diff -u -p -r1.497 totem.c
--- totem.c	10 May 2006 13:53:50 -0000	1.497
+++ totem.c	12 May 2006 11:55:28 -0000
@@ -1199,11 +1199,18 @@ on_next_button_clicked (GtkButton *butto
 static void
 on_got_redirect (BaconVideoWidget *bvw, const char *mrl, Totem *totem)
 {
+	gchar *old_mrl, *new_mrl;
+
+	old_mrl = totem_playlist_get_current_mrl (TOTEM_PLAYLIST (totem->playlist));
+	new_mrl = totem_resolve_relative_link (old_mrl, mrl);
+	g_free (old_mrl);
+
 	bacon_video_widget_close (totem->bvw);
 	totem_gdk_window_set_waiting_cursor (totem->win->window);
-	bacon_video_widget_open (totem->bvw, mrl, NULL);
+	bacon_video_widget_open (totem->bvw, new_mrl, NULL);
 	gdk_window_set_cursor (totem->win->window, NULL);
 	bacon_video_widget_play (bvw, NULL);
+	g_free (new_mrl);
 }
 
 /* This is only called when we are playing a DVD */
Index: backend/video-utils.c
===================================================================
RCS file: /cvs/gnome/totem/src/backend/video-utils.c,v
retrieving revision 1.29
diff -u -p -r1.29 video-utils.c
--- backend/video-utils.c	28 Apr 2006 10:45:07 -0000	1.29
+++ backend/video-utils.c	12 May 2006 11:55:28 -0000
@@ -345,8 +345,9 @@ totem_resolve_relative_link (const char 
 	g_return_val_if_fail (new_mrl != NULL, NULL);
 	g_return_val_if_fail (old_mrl != NULL, NULL);
 
+	/* if new mrl is already absolute, just return it as it is */
 	if (strstr (new_mrl, "://") != NULL)
-		return NULL;
+		return g_strdup (new_mrl);
 
 	tmp = g_strdup (old_mrl);
 	if ((l = strrchr (tmp, '/')))
Index: backend/bacon-video-widget-gst-0.10.c
===================================================================
RCS file: /cvs/gnome/totem/src/backend/bacon-video-widget-gst-0.10.c,v
retrieving revision 1.69
diff -u -p -r1.69 bacon-video-widget-gst-0.10.c
--- backend/bacon-video-widget-gst-0.10.c	30 Apr 2006 11:14:47 -0000	1.69
+++ backend/bacon-video-widget-gst-0.10.c	12 May 2006 11:55:33 -0000
@@ -998,11 +998,7 @@ bvw_handle_element_message (BaconVideoWi
     GST_DEBUG ("Got redirect to '%s'", GST_STR_NULL (new_location));
 
     if (new_location && *new_location) {
-      char *absolute;
-      absolute = totem_resolve_relative_link (bvw->priv->mrl, new_location);
-      g_signal_emit (bvw, bvw_signals[SIGNAL_REDIRECT], 0,
-		     absolute ? absolute : new_location);
-      g_free (absolute);
+      g_signal_emit (bvw, bvw_signals[SIGNAL_REDIRECT], 0, new_location);
       goto done;
     }
   } else if (strcmp (type_name, "prepare-xwindow-id") == 0 ||
