diff options
author | rtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-05-28 21:40:53 +0000 |
---|---|---|
committer | rtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-05-28 21:40:53 +0000 |
commit | 7f47ef5532312f2eebb2d002c8cd29dbe4682979 (patch) | |
tree | 18036f93fae59cc1cdd47ab90ac3d4ebaba915a8 /libmpdemux/realrtsp | |
parent | 39fe37918d72a05f1447574b418b75b40502f884 (diff) | |
download | mpv-7f47ef5532312f2eebb2d002c8cd29dbe4682979.tar.bz2 mpv-7f47ef5532312f2eebb2d002c8cd29dbe4682979.tar.xz |
Fix redirection in real rtsp connections.
Patch by yepyep (sdpplin.c part not committed)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10200 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/realrtsp')
-rw-r--r-- | libmpdemux/realrtsp/rtsp_session.c | 16 | ||||
-rw-r--r-- | libmpdemux/realrtsp/rtsp_session.h | 2 |
2 files changed, 12 insertions, 6 deletions
diff --git a/libmpdemux/realrtsp/rtsp_session.c b/libmpdemux/realrtsp/rtsp_session.c index e14653c5e6..54b987b67b 100644 --- a/libmpdemux/realrtsp/rtsp_session.c +++ b/libmpdemux/realrtsp/rtsp_session.c @@ -65,7 +65,7 @@ struct rtsp_session_s { }; //rtsp_session_t *rtsp_session_start(char *mrl) { -rtsp_session_t *rtsp_session_start(int fd, char *mrl, char *path, char *host, int port) { +rtsp_session_t *rtsp_session_start(int fd, char **mrl, char *path, char *host, int port, int *redir) { rtsp_session_t *rtsp_session=malloc(sizeof(rtsp_session_t)); char *server; @@ -73,10 +73,11 @@ rtsp_session_t *rtsp_session_start(int fd, char *mrl, char *path, char *host, in rmff_header_t *h; uint32_t bandwidth=10485800; -connect: +//connect: + *redir = 0; /* connect to server */ - rtsp_session->s=rtsp_connect(fd,mrl,path,host,port,NULL); + rtsp_session->s=rtsp_connect(fd,*mrl,path,host,port,NULL); if (!rtsp_session->s) { printf("rtsp_session: failed to connect to server %s\n", path); @@ -107,8 +108,13 @@ connect: printf("rtsp_session: redirected to %s\n", mrl_line); rtsp_close(rtsp_session->s); free(server); - /* FIXME: this won't work in MPlayer, connection opened by caller */ - goto connect; /* *shudder* i made a design mistake somewhere */ + free(*mrl); + free(rtsp_session); + /* tell the caller to redirect, return url to redirect to in mrl */ + *mrl = mrl_line; + *redir = 1; + return NULL; +// goto connect; /* *shudder* i made a design mistake somewhere */ } else { printf("rtsp_session: session can not be established.\n"); diff --git a/libmpdemux/realrtsp/rtsp_session.h b/libmpdemux/realrtsp/rtsp_session.h index ec71b4f7e3..d22788f1c5 100644 --- a/libmpdemux/realrtsp/rtsp_session.h +++ b/libmpdemux/realrtsp/rtsp_session.h @@ -30,7 +30,7 @@ typedef struct rtsp_session_s rtsp_session_t; -rtsp_session_t *rtsp_session_start(int fd, char *mrl, char *path, char *host, int port); +rtsp_session_t *rtsp_session_start(int fd, char **mrl, char *path, char *host, int port, int *redir); int rtsp_session_read(rtsp_session_t *session, char *data, int len); |