--- a/src/server/safs/cgi.h Sun Jun 04 20:09:18 2023 +0200 +++ b/src/server/safs/cgi.h Mon Jun 05 19:03:23 2023 +0200 @@ -57,20 +57,65 @@ CGIProcess process; CGIResponseParser *parser; HttpResponseWriter *response; + + /* + * request path (rq->vars path) + */ char *path; + + /* + * event object prepared for pollout + * only activated if write returns EWOULDBLOCK + */ Event *writeev; - Event *stderrev; + + /* + * temp buffer used for parsing stderr lines + */ char *stderr_tmp; + /* + * current length of stderr_tmp + */ int stderr_tmplen; + + /* + * allocation size of stderr_tmp + */ int stderr_tmpalloc; + + /* + * output buffer + */ char *writebuf; + + /* + * writebuf allocation size + */ size_t writebuf_alloc; + + /* + * currently used size of writebuf + */ size_t writebuf_size; + + /* + * current writebuf pos (writebuf_size - write_buf_pos = remaining) + */ size_t writebuf_pos; - WSBool stderr_finished; - WSBool read_output_finished; - WSBool send_response_finished; + + /* + * poll_out event active + */ WSBool poll_out; + + /* + * number of currently open events (stdout, stderr, [stdout]) + */ + int events; + + /* + * error indicator + */ int result; } CGIHandler;