X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/f5b350a276b0f0dc27759af517c47f1812518b1d..a6757e481a75d3e6ddd2c8f7ccee611b52b4709d:/package/uhttpd/src/uhttpd-cgi.c?ds=sidebyside diff --git a/package/uhttpd/src/uhttpd-cgi.c b/package/uhttpd/src/uhttpd-cgi.c index 28686b47e..086124916 100644 --- a/package/uhttpd/src/uhttpd-cgi.c +++ b/package/uhttpd/src/uhttpd-cgi.c @@ -68,7 +68,7 @@ static struct http_response * uh_cgi_header_parse(char *buf, int len, int *off) if( (pos < len) && (buf[pos] == '\n') ) pos++; - if( pos < len ) + if( pos <= len ) { if( (hdrcount + 1) < array_size(res.headers) ) { @@ -234,6 +234,17 @@ void uh_cgi_request(struct client *cl, struct http_request *req, struct path_inf if( pi->info ) setenv("PATH_INFO", pi->info, 1); + /* REDIRECT_STATUS, php-cgi wants it */ + switch( req->redirect_status ) + { + case 404: + setenv("REDIRECT_STATUS", "404", 1); + break; + + default: + setenv("REDIRECT_STATUS", "200", 1); + break; + } /* http version */ if( req->version > 1.0 ) @@ -562,7 +573,10 @@ void uh_cgi_request(struct client *cl, struct http_request *req, struct path_inf close(wfd[1]); if( !kill(child, 0) ) + { kill(child, SIGTERM); + waitpid(child, NULL, 0); + } break; }