|
@@ -1303,7 +1303,6 @@ static pid_t spawn_process(struct mg_connection *conn, const char *prog,
|
|
|
(void) close(fd_stdin);
|
|
|
(void) close(fd_stdout);
|
|
|
|
|
|
- // Execute CGI program. No need to lock: new process
|
|
|
interp = conn->ctx->config[CGI_INTERPRETER];
|
|
|
if (interp == NULL) {
|
|
|
(void) execle(prog, prog, NULL, envp);
|
|
@@ -1728,6 +1727,7 @@ static const struct {
|
|
|
{".m3u", 4, "audio/x-mpegurl"},
|
|
|
{".ram", 4, "audio/x-pn-realaudio"},
|
|
|
{".xml", 4, "text/xml"},
|
|
|
+ {".json", 5, "text/json"},
|
|
|
{".xslt", 5, "application/xml"},
|
|
|
{".ra", 3, "audio/x-pn-realaudio"},
|
|
|
{".doc", 4, "application/msword"},
|
|
@@ -3003,6 +3003,9 @@ static void handle_cgi_request(struct mg_connection *conn, const char *prog) {
|
|
|
!forward_body_data(conn, in, INVALID_SOCKET, NULL)) {
|
|
|
goto done;
|
|
|
}
|
|
|
+ // Close so child gets an EOF.
|
|
|
+ fclose(in);
|
|
|
+ in = NULL;
|
|
|
|
|
|
// Now read CGI reply into a buffer. We need to set correct
|
|
|
// status code, thus we need to see all HTTP headers first.
|