src/server/safs/cgi.h

changeset 430
83560f32e7d5
parent 415
d938228c382e
child 431
032b0ad35ee3
equal deleted inserted replaced
429:25c8e8021156 430:83560f32e7d5
37 #endif 37 #endif
38 38
39 typedef struct { 39 typedef struct {
40 int in[2]; 40 int in[2];
41 int out[2]; 41 int out[2];
42 int err[2];
42 pid_t pid; 43 pid_t pid;
43 } CGIProcess; 44 } CGIProcess;
44 45
45 typedef struct { 46 typedef struct {
46 Session *sn; 47 Session *sn;
47 Request *rq; 48 Request *rq;
48 CxBuffer tmp; 49 CxBuffer tmp;
49 int status; 50 int status;
50 char *msg; 51 char *msg;
52 size_t response_length;
53 WSBool cgiheader;
51 } CGIResponseParser; 54 } CGIResponseParser;
55
56 typedef struct CGIHandler {
57 CGIProcess process;
58 CGIResponseParser *parser;
59 char *path;
60 Event *writeev;
61 char *stderr_tmp;
62 int result;
63 } CGIHandler;
52 64
53 int send_cgi(pblock *pb, Session *sn, Request *rq); 65 int send_cgi(pblock *pb, Session *sn, Request *rq);
54 66
55 char** cgi_add_vars(char **env, Session *sn, Request *rq); 67 char** cgi_add_vars(char **env, Session *sn, Request *rq);
56 68
57 int cgi_start(CGIProcess *p, char *path, char *const argv[], char *const envp[]); 69 int cgi_start(CGIProcess *p, char *path, char *const argv[], char *const envp[]);
58 70
59 int cgi_close(CGIProcess *p); 71 int cgi_close(CGIProcess *p);
72
73 int cgi_stdout_readevent(EventHandler *ev, Event *event);
74 int cgi_stderr_readevent(EventHandler *ev, Event *event);
75 int cgi_event_finish(EventHandler *ev, Event *event);
60 76
61 CGIResponseParser* cgi_parser_new(Session *sn, Request *rq); 77 CGIResponseParser* cgi_parser_new(Session *sn, Request *rq);
62 void cgi_parser_free(CGIResponseParser *parser); 78 void cgi_parser_free(CGIResponseParser *parser);
63 int cgi_parse_response(CGIResponseParser *parser, char *buf, size_t len, size_t *bpos); 79 int cgi_parse_response(CGIResponseParser *parser, char *buf, size_t len, size_t *bpos);
64 80

mercurial