diff -r 2c3fe06a9210 -r ec22d4ccd081 src/server/safs/cgi.h --- a/src/server/safs/cgi.h Sun Apr 07 10:25:01 2024 +0200 +++ b/src/server/safs/cgi.h Sun May 12 11:26:59 2024 +0200 @@ -35,7 +35,16 @@ #ifdef __cplusplus extern "C" { #endif + +enum CgiIOResult { + CGI_IO_COMPLETE = 0, + CGI_IO_NEED_READ, + CGI_IO_NEED_WRITE, + CGI_IO_ERROR +}; +typedef enum CgiIOResult CgiIOResult; + typedef struct { int in[2]; int out[2]; @@ -64,6 +73,12 @@ char *path; /* + * event object for pollin + * active by default and my be deactivated/reactivated in some cases + */ + Event *readev; + + /* * event object prepared for pollout * only activated if write returns EWOULDBLOCK */ @@ -155,7 +170,7 @@ int cgi_event_finish(EventHandler *ev, Event *event); int cgi_writeevent(EventHandler *ev, Event *event); -int cgi_read_output(CGIHandler *handler, EventHandler *ev); +CgiIOResult cgi_read_output(CGIHandler *handler, EventHandler *ev); CGIResponseParser* cgi_parser_new(Session *sn, Request *rq); void cgi_parser_free(CGIResponseParser *parser);