X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuhttpd.git;a=blobdiff_plain;f=cgi.c;h=6441fda4ca574afe50e469f972bfa1b71a7af00f;hp=02665d8b01ae1858a1851d60f91012b063b93b04;hb=857bf0231d89d3a2bbccfef27af53ce3baaa2403;hpb=b016f111233e840da8879b1fe933b72aa8ac625f diff --git a/cgi.c b/cgi.c index 02665d8..6441fda 100644 --- a/cgi.c +++ b/cgi.c @@ -36,14 +36,11 @@ void uh_interpreter_add(const char *ext, const char *path) list_add_tail(&in->list, &interpreters); } -static void cgi_main(struct client *cl, struct path_info *pi, int fd) +static void cgi_main(struct client *cl, struct path_info *pi, char *url) { const struct interpreter *ip = pi->ip; struct env_var *var; - dup2(fd, 0); - dup2(fd, 1); - close(fd); clearenv(); setenv("PATH", conf.cgi_path, 1); @@ -66,7 +63,7 @@ static void cgi_main(struct client *cl, struct path_info *pi, int fd) " %s: %s\n", ip ? ip->path : pi->phys, strerror(errno)); } -static void cgi_handle_request(struct client *cl, const char *url, struct path_info *pi) +static void cgi_handle_request(struct client *cl, char *url, struct path_info *pi) { unsigned int mode = S_IFREG | S_IXOTH; @@ -77,7 +74,7 @@ static void cgi_handle_request(struct client *cl, const char *url, struct path_i return; } - if (!uh_create_process(cl, pi, cgi_main)) { + if (!uh_create_process(cl, pi, url, cgi_main)) { uh_client_error(cl, 500, "Internal Server Error", "Failed to create CGI process: %s", strerror(errno)); return;