diff -r 7c9137f9e7f9 -r 39fe86ae4db0 src/server/safs/cgi.h --- a/src/server/safs/cgi.h Sun Nov 13 10:57:38 2022 +0100 +++ b/src/server/safs/cgi.h Sun Nov 13 12:58:25 2022 +0100 @@ -56,12 +56,20 @@ typedef struct CGIHandler { CGIProcess process; CGIResponseParser *parser; + HttpResponseWriter *response; char *path; Event *writeev; Event *stderrev; char *stderr_tmp; int stderr_tmplen; + char *writebuf; + size_t writebuf_alloc; + size_t writebuf_size; + size_t writebuf_pos; WSBool stderr_finished; + WSBool read_output_finished; + WSBool send_response_finished; + WSBool poll_out; int result; } CGIHandler; @@ -76,6 +84,9 @@ int cgi_stdout_readevent(EventHandler *ev, Event *event); int cgi_stderr_readevent(EventHandler *ev, Event *event); int cgi_event_finish(EventHandler *ev, Event *event); +int cgi_writeevent(EventHandler *ev, Event *event); + +int cgi_read_output(CGIHandler *handler, EventHandler *ev); CGIResponseParser* cgi_parser_new(Session *sn, Request *rq); void cgi_parser_free(CGIResponseParser *parser);