aboutsummaryrefslogtreecommitdiff
path: root/networking/httpd.c
diff options
context:
space:
mode:
Diffstat (limited to 'networking/httpd.c')
-rw-r--r--networking/httpd.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/networking/httpd.c b/networking/httpd.c
index 8834c1c71..6dbc219e7 100644
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -1145,13 +1145,14 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post
1145 /* post_len <= 0 && hdr_cnt <= 0: 1145 /* post_len <= 0 && hdr_cnt <= 0:
1146 * no more POST data to CGI, 1146 * no more POST data to CGI,
1147 * let CGI see EOF on CGI's stdin */ 1147 * let CGI see EOF on CGI's stdin */
1148 close(toCgi_wr); 1148 if (toCgi_wr != fromCgi_rd)
1149 close(toCgi_wr);
1149 toCgi_wr = 0; 1150 toCgi_wr = 0;
1150 } 1151 }
1151 } 1152 }
1152 1153
1153 /* Now wait on the set of sockets */ 1154 /* Now wait on the set of sockets */
1154 count = safe_poll(pfd, 3, -1); 1155 count = safe_poll(pfd, toCgi_wr ? TO_CGI+1 : FROM_CGI+1, -1);
1155 if (count <= 0) { 1156 if (count <= 0) {
1156#if 0 1157#if 0
1157 if (safe_waitpid(pid, &status, WNOHANG) <= 0) { 1158 if (safe_waitpid(pid, &status, WNOHANG) <= 0) {
@@ -2103,8 +2104,7 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr)
2103 header_ptr += 2; 2104 header_ptr += 2;
2104 write(proxy_fd, header_buf, header_ptr - header_buf); 2105 write(proxy_fd, header_buf, header_ptr - header_buf);
2105 free(header_buf); /* on the order of 8k, free it */ 2106 free(header_buf); /* on the order of 8k, free it */
2106 /* cgi_io_loop_and_exit needs to have two distinct fds */ 2107 cgi_io_loop_and_exit(proxy_fd, proxy_fd, length);
2107 cgi_io_loop_and_exit(proxy_fd, dup(proxy_fd), length);
2108 } 2108 }
2109#endif 2109#endif
2110 2110