diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2010-07-23 13:15:22 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2010-07-23 13:15:22 +0000 |
commit | b688fcaa5c8aa6c3bbb08075e4204eda0ac16052 (patch) | |
tree | 66853f91f396421e88f59c4240f8a0505dff5d80 /package/uhttpd/src/uhttpd-utils.c | |
parent | c28ab82e0469e2c8a578f3fd40bfa10e3835290d (diff) | |
download | upstream-b688fcaa5c8aa6c3bbb08075e4204eda0ac16052.tar.gz upstream-b688fcaa5c8aa6c3bbb08075e4204eda0ac16052.tar.bz2 upstream-b688fcaa5c8aa6c3bbb08075e4204eda0ac16052.zip |
uhttpd: - fix a compile warning - support custom index file names - support custom error pages (or cgi handler) - add option to disable directory listings - add REDIRECT_STATUS for CGI requests, fixes php-cgi
SVN-Revision: 22366
Diffstat (limited to 'package/uhttpd/src/uhttpd-utils.c')
-rw-r--r-- | package/uhttpd/src/uhttpd-utils.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/package/uhttpd/src/uhttpd-utils.c b/package/uhttpd/src/uhttpd-utils.c index caa6b12bc6..60badf26df 100644 --- a/package/uhttpd/src/uhttpd-utils.c +++ b/package/uhttpd/src/uhttpd-utils.c @@ -464,6 +464,9 @@ struct path_info * uh_path_lookup(struct client *cl, const char *url) int i = 0; struct stat s; + /* back out early if url is undefined */ + if ( url == NULL ) + return NULL; memset(path_phys, 0, sizeof(path_phys)); memset(path_info, 0, sizeof(path_info)); @@ -550,18 +553,31 @@ struct path_info * uh_path_lookup(struct client *cl, const char *url) memcpy(buffer, path_phys, sizeof(buffer)); pathptr = &buffer[strlen(buffer)]; - for( i = 0; i < array_size(uh_index_files); i++ ) + if( cl->server->conf->index_file ) { - strncat(buffer, uh_index_files[i], sizeof(buffer)); + strncat(buffer, cl->server->conf->index_file, sizeof(buffer)); if( !stat(buffer, &s) && (s.st_mode & S_IFREG) ) { memcpy(path_phys, buffer, sizeof(path_phys)); memcpy(&p.stat, &s, sizeof(p.stat)); - break; } + } + else + { + for( i = 0; i < array_size(uh_index_files); i++ ) + { + strncat(buffer, uh_index_files[i], sizeof(buffer)); - *pathptr = 0; + if( !stat(buffer, &s) && (s.st_mode & S_IFREG) ) + { + memcpy(path_phys, buffer, sizeof(path_phys)); + memcpy(&p.stat, &s, sizeof(p.stat)); + break; + } + + *pathptr = 0; + } } p.root = docroot; |