From bae79c048fbbeb541182d93abf7c687ce79c5837 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Sat, 24 Feb 2007 03:17:59 +0000 Subject: [PATCH] redirect http get requests of / to index.html (note, the http_parse_request may worth a rewrite) Originally committed as revision 8113 to svn://svn.ffmpeg.org/ffmpeg/trunk --- ffserver.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/ffserver.c b/ffserver.c index c03381d54a..ccbf41f3b8 100644 --- a/ffserver.c +++ b/ffserver.c @@ -1175,7 +1175,7 @@ static int http_parse_request(HTTPContext *c) char *p; enum RedirType redir_type; char cmd[32]; - char info[1024], *filename; + char info[1024], filename[1024]; char url[1024], *q; char protocol[32]; char msg[1024]; @@ -1209,11 +1209,7 @@ static int http_parse_request(HTTPContext *c) http_log("New connection: %s %s\n", cmd, url); /* find the filename and the optional info string in the request */ - p = url; - if (*p == '/') - p++; - filename = p; - p = strchr(p, '?'); + p = strchr(url, '?'); if (p) { pstrcpy(info, sizeof(info), p); *p = '\0'; @@ -1221,6 +1217,8 @@ static int http_parse_request(HTTPContext *c) info[0] = '\0'; } + pstrcpy(filename, sizeof(filename)-1, url + ((*url == '/') ? 1 : 0)); + for (p = c->buffer; *p && *p != '\r' && *p != '\n'; ) { if (strncasecmp(p, "User-Agent:", 11) == 0) { useragent = p + 11; @@ -1248,12 +1246,16 @@ static int http_parse_request(HTTPContext *c) strcpy(filename + strlen(filename)-2, "m"); } else if (match_ext(filename, "rtsp")) { redir_type = REDIR_RTSP; - compute_real_filename(filename, sizeof(url) - 1); + compute_real_filename(filename, sizeof(filename) - 1); } else if (match_ext(filename, "sdp")) { redir_type = REDIR_SDP; - compute_real_filename(filename, sizeof(url) - 1); + compute_real_filename(filename, sizeof(filename) - 1); } + // "redirect" / request to index.html + if (!strlen(filename)) + pstrcpy(filename, sizeof(filename) - 1, "index.html"); + stream = first_stream; while (stream != NULL) { if (!strcmp(stream->filename, filename) && validate_acl(stream, c))