summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ffserver.c18
1 files 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))