diff -pruN xmms-1.2.7/Input/mpg123/http.c xmms-1.2.7-blindcoder/Input/mpg123/http.c
--- xmms-1.2.7/Input/mpg123/http.c	Mon Jan  7 15:08:04 2002
+++ xmms-1.2.7-blindcoder/Input/mpg123/http.c	Thu Apr  3 11:09:07 2003
@@ -328,6 +328,8 @@ static void *http_buffer_loop(void *arg)
 	gchar line[1024], *user, *pass, *host, *filename,
 	     *status, *url, *temp, *file;
 	gchar *chost;
+	char *output_name_current; // blindcoder
+
 	gint cnt, written, error, err_len, port, cport;
 	gboolean redirect;
 	int udp_sock = 0;
@@ -337,6 +339,8 @@ static void *http_buffer_loop(void *arg)
 	struct timeval tv;
 
 	url = (gchar *) arg;
+	output_name_current = malloc(2048);
+	memset (output_name_current, 0x0, 2048);
 	do
 	{
 		redirect=FALSE;
@@ -570,26 +574,46 @@ static void *http_buffer_loop(void *arg)
 	if (mpg123_cfg.save_http_stream)
 	{
 		gchar *output_name;
-		file = mpg123_http_get_title(url);
+		file = playlist_get_songtitle(get_playlist_position());
 		output_name = file;
-		if (!strncasecmp(output_name, "http://", 7))
-			output_name += 7;
-		temp = strrchr(output_name, '.');
-		if (temp && !strcasecmp(temp, ".mp3"))
-			*temp = '\0';
 
 		while ((temp = strchr(output_name, '/')))
 			*temp = '_';
+
 		output_name = g_strdup_printf("%s/%s.mp3", mpg123_cfg.save_http_path, output_name);
 
 		g_free(file);
 
 		output_file = fopen(output_name, "wb");
+		memset(output_name_current, 0x0, 2048);
+		sprintf(output_name_current, "%s", output_name);
 		g_free(output_name);
 	}
 
 	while (going)
 	{
+// blindcoder
+		if (mpg123_cfg.save_http_stream)
+		{
+			gchar *output_name;
+			file = playlist_get_songtitle(get_playlist_position());
+			output_name = file;
+
+			while ((temp = strchr(output_name, '/')))
+				*temp = '_';
+
+			output_name = g_strdup_printf("%s/%s.mp3", mpg123_cfg.save_http_path, output_name);
+
+			g_free(file);
+
+			if (strncasecmp(output_name, output_name_current, strlen(output_name)) != 0){
+				fclose(output_file);
+				output_file = fopen(output_name, "wb");
+				memset(output_name_current, 0x0, 2048);
+				sprintf(output_name_current, "%s", output_name);
+			}
+			g_free(output_name);
+		}
 
 		if (!http_used() && !mpg123_ip.output->buffer_playing())
 			prebuffering = TRUE;
