--- a/src/server/safs/cgi.h Sat Nov 12 17:34:58 2022 +0100 +++ b/src/server/safs/cgi.h Sat Nov 12 20:50:45 2022 +0100 @@ -39,6 +39,7 @@ typedef struct { int in[2]; int out[2]; + int err[2]; pid_t pid; } CGIProcess; @@ -48,7 +49,18 @@ CxBuffer tmp; int status; char *msg; + size_t response_length; + WSBool cgiheader; } CGIResponseParser; + +typedef struct CGIHandler { + CGIProcess process; + CGIResponseParser *parser; + char *path; + Event *writeev; + char *stderr_tmp; + int result; +} CGIHandler; int send_cgi(pblock *pb, Session *sn, Request *rq); @@ -58,6 +70,10 @@ int cgi_close(CGIProcess *p); +int cgi_stdout_readevent(EventHandler *ev, Event *event); +int cgi_stderr_readevent(EventHandler *ev, Event *event); +int cgi_event_finish(EventHandler *ev, Event *event); + CGIResponseParser* cgi_parser_new(Session *sn, Request *rq); void cgi_parser_free(CGIResponseParser *parser); int cgi_parse_response(CGIResponseParser *parser, char *buf, size_t len, size_t *bpos);