X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/2442fc33b90d1c5806b65738eada3d7af9230bc3..ce1fba93b42433774a41298949b1216d51cfd257:/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 8bd22503d..855a72f56 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) ) { @@ -376,7 +376,7 @@ void uh_cgi_request(struct client *cl, struct http_request *req, struct path_inf FD_SET(wfd[1], &writer); /* wait until we can read or write or both */ - if( select(fd_max, &reader, + if( select_intr(fd_max, &reader, (content_length > -1) ? &writer : NULL, NULL, (header_sent < 1) ? &timeout : NULL) > 0 ) { @@ -562,7 +562,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; }