[MPlayer-dev-eng] [PATCH] better redirect support

Reimar Döffinger Reimar.Doeffinger at stud.uni-karlsruhe.de
Tue Nov 7 21:18:45 CET 2006


Hello,
attached patch fixes a crash with
mplayer -playlist http://www.radioseven.se/radioseven.pls
Please comment.

Greetings,
Reimar Döffinger
-------------- next part --------------
Index: stream/url.c
===================================================================
--- stream/url.c	(revision 20748)
+++ stream/url.c	(working copy)
@@ -19,6 +19,25 @@
 #define SIZE_MAX ((size_t)-1)
 #endif
 
+URL_t *url_redirect(URL_t **url, const char *redir) {
+  URL_t *u = *url;
+  URL_t *res;
+  if (!strchr(redir, '/')) {
+    char *tmp;
+    char *newurl = malloc(strlen(u->url) + strlen(redir) + 1);
+    strcpy(newurl, u->url);
+    tmp = strrchr(newurl, '/');
+    if (tmp) tmp[1] = 0;
+    strcat(newurl, redir);
+    res = url_new(newurl);
+    free(newurl);
+  } else
+    res = url_new(redir);
+  url_free(u);
+  *url = res;
+  return res;
+}
+
 URL_t*
 url_new(const char* url) {
 	int pos1, pos2,v6addr = 0;
Index: stream/url.h
===================================================================
--- stream/url.h	(revision 20748)
+++ stream/url.h	(working copy)
@@ -19,6 +19,7 @@
 	char *password;
 } URL_t;
 
+URL_t *url_redirect(URL_t **url, const char *redir);
 URL_t* url_new(const char* url);
 void   url_free(URL_t* url);
 
Index: stream/http.c
===================================================================
--- stream/http.c	(revision 20748)
+++ stream/http.c	(working copy)
@@ -835,8 +835,7 @@
 				next_url = http_get_field( http_hdr, "Location" );
 				if( next_url!=NULL ) {
 					closesocket( fd );
-					url_free( url );
-					stream->streaming_ctrl->url = url = url_new( next_url );
+					stream->streaming_ctrl->url = url_redirect( &url, next_url );
 					http_free( http_hdr );
 					redirect = 1;	
 				}


More information about the MPlayer-dev-eng mailing list