323 event->finish = NULL; |
323 event->finish = NULL; |
324 return 0; |
324 return 0; |
325 } |
325 } |
326 |
326 |
327 event->finish = cgi_event_finish; |
327 event->finish = cgi_event_finish; |
328 handler->writeev->finish = NULL; |
328 handler->writeev->finish = NULL; // TODO: maybe this can be removed |
329 CgiIOResult ret = cgi_read_output(handler, ev, "readevent"); |
329 CgiIOResult ret = cgi_read_output(handler, ev, "readevent"); |
330 switch(ret) { |
330 switch(ret) { |
331 case CGI_IO_COMPLETE: { |
331 case CGI_IO_COMPLETE: { |
332 break; |
332 break; |
333 } |
333 } |
358 |
358 |
359 int cgi_writeevent(EventHandler *ev, Event *event) { |
359 int cgi_writeevent(EventHandler *ev, Event *event) { |
360 CGIHandler *handler = event->cookie; |
360 CGIHandler *handler = event->cookie; |
361 |
361 |
362 if(handler->cgi_eof || handler->result == REQ_ABORTED) { |
362 if(handler->cgi_eof || handler->result == REQ_ABORTED) { |
|
363 // same as in cgi_stdout_readevent |
|
364 // request processing will be finished by the read event |
363 log_ereport(LOG_DEBUG, "cgi-send: req: %p writeevent cgi_eof = TRUE result: %d", handler->parser->rq, handler->result); |
365 log_ereport(LOG_DEBUG, "cgi-send: req: %p writeevent cgi_eof = TRUE result: %d", handler->parser->rq, handler->result); |
|
366 handler->poll_out = FALSE; |
|
367 event->finish = NULL; |
|
368 return 0; |
364 } |
369 } |
365 |
370 |
366 event->finish = cgi_event_finish; |
371 event->finish = cgi_event_finish; |
367 handler->readev->finish = NULL; |
372 handler->readev->finish = NULL; // TODO: maybe this can be removed |
368 CgiIOResult ret = cgi_read_output(handler, ev, "writeevent"); |
373 CgiIOResult ret = cgi_read_output(handler, ev, "writeevent"); |
369 switch(ret) { |
374 switch(ret) { |
370 case CGI_IO_COMPLETE: { |
375 case CGI_IO_COMPLETE: { |
371 break; |
376 break; |
372 } |
377 } |
472 } |
477 } |
473 if(r < 0 && errno == EWOULDBLOCK) { |
478 if(r < 0 && errno == EWOULDBLOCK) { |
474 return CGI_IO_NEED_READ; |
479 return CGI_IO_NEED_READ; |
475 } |
480 } |
476 handler->cgi_eof = TRUE; |
481 handler->cgi_eof = TRUE; |
477 log_ereport(LOG_DEBUG, "cgi-send: rq: %p pid: %d set cgi_eof : %s", rq, handler->process.pid, debug_log); |
482 log_ereport(LOG_DEBUG, "cgi-send: req: %p pid: %d set cgi_eof : %s", rq, handler->process.pid, debug_log); |
478 return ret; |
483 return ret; |
479 } |
484 } |
480 |
485 |
481 int cgi_stderr_readevent(EventHandler *ev, Event *event) { |
486 int cgi_stderr_readevent(EventHandler *ev, Event *event) { |
482 CGIHandler *handler = event->cookie; |
487 CGIHandler *handler = event->cookie; |