From 17230ccc4201d8ebf2bf777d6f21e3505fb3a641 Mon Sep 17 00:00:00 2001 From: hugogogo Date: Wed, 10 Aug 2022 16:24:24 +0200 Subject: [PATCH] in cgi exec add save stdin and out --- srcs/webserv/cgi_script.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/srcs/webserv/cgi_script.cpp b/srcs/webserv/cgi_script.cpp index be03cbe..1e47585 100644 --- a/srcs/webserv/cgi_script.cpp +++ b/srcs/webserv/cgi_script.cpp @@ -89,6 +89,8 @@ std::string Webserv::_exec_script(Client *client, char **env) std::string body = client->get_rq_body(); int fd_in[2]; int fd_out[2]; + int save_in = dup(STDIN_FILENO); + int save_out = dup(STDOUT_FILENO); pipe(fd_in); pipe(fd_out); @@ -104,9 +106,9 @@ std::string Webserv::_exec_script(Client *client, char **env) dup2(FD_WR_TO_PRNT, STDOUT_FILENO); // DEBUG std::cerr << "execve:\n"; - execve(client->get_rq_script_path().c_str(), nll, env); + //execve(client->get_rq_script_path().c_str(), nll, env); // for tests execve crash : - //execve("wrong", nll, env); + execve("wrong", nll, env); std::cerr << "execve crashed.\n"; } else @@ -127,6 +129,9 @@ std::string Webserv::_exec_script(Client *client, char **env) } if (script_output.empty()) script_output = "Status: 500\r\n\r\n"; + + dup2(save_in, STDIN_FILENO); + dup2(save_out, STDOUT_FILENO); return script_output; }