diff options
author | Stefan Holst <holstsn@users.sourceforge.net> | 2002-12-14 00:02:30 +0000 |
---|---|---|
committer | Stefan Holst <holstsn@users.sourceforge.net> | 2002-12-14 00:02:30 +0000 |
commit | 5b1e75b3f7a62fee2732541fb69fcd4319f53edc (patch) | |
tree | 9e654fdff0cd6419ce98c012ceba8bdce2ebf79e /src/input/librtsp/rtsp_session.c | |
parent | 4ee79ef2a5f0843917309052bd672060a2a2e06e (diff) | |
download | xine-lib-5b1e75b3f7a62fee2732541fb69fcd4319f53edc.tar.gz xine-lib-5b1e75b3f7a62fee2732541fb69fcd4319f53edc.tar.bz2 |
- rtsp audio only streams now work better
- a hack to handle REDIRECT rtsp method
- make rtsp fields case insensitive
- add '.rm' suffix to mrls to force handling
by demux_real.
CVS patchset: 3516
CVS date: 2002/12/14 00:02:30
Diffstat (limited to 'src/input/librtsp/rtsp_session.c')
-rw-r--r-- | src/input/librtsp/rtsp_session.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/input/librtsp/rtsp_session.c b/src/input/librtsp/rtsp_session.c index fb728bab9..b522c777f 100644 --- a/src/input/librtsp/rtsp_session.c +++ b/src/input/librtsp/rtsp_session.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: rtsp_session.c,v 1.1 2002/12/12 22:14:56 holstsn Exp $ + * $Id: rtsp_session.c,v 1.2 2002/12/14 00:02:31 holstsn Exp $ * * high level interface to rtsp servers. */ @@ -64,14 +64,17 @@ rtsp_session_t *rtsp_session_start(char *mrl) { rtsp_session_t *rtsp_session=malloc(sizeof(rtsp_session_t)); char *server; + char *mrl_line=strdup(mrl); rmff_header_t *h; uint32_t bandwidth=10485800; +connect: + /* connect to server */ - rtsp_session->s=rtsp_connect(mrl,NULL); + rtsp_session->s=rtsp_connect(mrl_line,NULL); if (!rtsp_session->s) { - printf("rtsp_session: failed to connect to server\n"); + printf("rtsp_session: failed to connect to server %s\n", mrl_line); free(rtsp_session); return NULL; } @@ -84,6 +87,19 @@ rtsp_session_t *rtsp_session_start(char *mrl) { /* we are talking to a real server ... */ h=real_setup_and_get_header(rtsp_session->s, bandwidth); + if (!h) { + /* got an redirect? */ + if (rtsp_search_answers(rtsp_session->s, "Location")) + { + free(mrl_line); + mrl_line=strdup(rtsp_search_answers(rtsp_session->s, "Location")); + printf("rtsp_session: redirected to %s\n", mrl_line); + rtsp_close(rtsp_session->s); + free(server); + goto connect; /* *shudder* i made a design mistake somewhere */ + } + } + rtsp_session->header_len=rmff_dump_header(h,rtsp_session->header,1024); memcpy(rtsp_session->recv, rtsp_session->header, rtsp_session->header_len); |