81 env = cgi_specific_vars(sn, rq, args, env, 1); |
81 env = cgi_specific_vars(sn, rq, args, env, 1); |
82 |
82 |
83 CGIProcess cgip; |
83 CGIProcess cgip; |
84 int ret = cgi_start(&cgip, path, argv, env); |
84 int ret = cgi_start(&cgip, path, argv, env); |
85 if(ret != REQ_PROCEED) { |
85 if(ret != REQ_PROCEED) { |
|
86 util_env_free(env); |
|
87 cgi_free_argv(argv); |
86 return ret; |
88 return ret; |
87 } |
89 } |
88 |
90 |
89 util_env_free(env); |
91 util_env_free(env); |
|
92 cgi_free_argv(argv); |
90 |
93 |
91 char buf[4096]; // I/O buffer |
94 char buf[4096]; // I/O buffer |
92 ssize_t r; |
95 ssize_t r; |
93 |
96 |
94 if(content_length > 0) { |
97 if(content_length > 0) { |
244 * 1: successfully parsed lines |
247 * 1: successfully parsed lines |
245 * 2: cgi response header complete (empty line) |
248 * 2: cgi response header complete (empty line) |
246 * -1: error |
249 * -1: error |
247 */ |
250 */ |
248 static int parse_lines(CGIResponseParser *parser, char *buf, size_t len, int *pos) { |
251 static int parse_lines(CGIResponseParser *parser, char *buf, size_t len, int *pos) { |
|
252 UcxAllocator a = util_pool_allocator(parser->sn->pool); |
249 sstr_t name; |
253 sstr_t name; |
250 sstr_t value; |
254 sstr_t value; |
251 WSBool space = TRUE; |
255 WSBool space = TRUE; |
252 int i; |
256 int i; |
253 |
257 |