189 |
189 |
190 if(result == REQ_ABORTED) { |
190 if(result == REQ_ABORTED) { |
191 log_ereport(LOG_FAILURE, "cgi-send: kill script: %s", path); |
191 log_ereport(LOG_FAILURE, "cgi-send: kill script: %s", path); |
192 kill(cgip.pid, SIGKILL); |
192 kill(cgip.pid, SIGKILL); |
193 } |
193 } |
194 cgi_close(&cgip); // TODO: check return value |
194 |
|
195 int exit_code = cgi_close(&cgip); |
|
196 if(exit_code != 0) { |
|
197 log_ereport(LOG_FAILURE, "send-cgi: script: %s exited with code %d", path, exit_code); |
|
198 ret = REQ_ABORTED; |
|
199 } |
195 |
200 |
196 cgi_parser_free(parser); |
201 cgi_parser_free(parser); |
197 return result; |
202 return result; |
198 } |
203 } |
199 |
204 |
267 } |
272 } |
268 if(p->out[1] != -1) { |
273 if(p->out[1] != -1) { |
269 system_close(p->out[1]); |
274 system_close(p->out[1]); |
270 } |
275 } |
271 |
276 |
272 return 0; |
277 return status; |
273 } |
278 } |
274 |
279 |
275 CGIResponseParser* cgi_parser_new(Session *sn, Request *rq) { |
280 CGIResponseParser* cgi_parser_new(Session *sn, Request *rq) { |
276 CGIResponseParser* parser = pool_malloc(sn->pool, sizeof(CGIResponseParser)); |
281 CGIResponseParser* parser = pool_malloc(sn->pool, sizeof(CGIResponseParser)); |
277 parser->sn = sn; |
282 parser->sn = sn; |