src/server/safs/cgi.c

changeset 520
0b09f0cb6098
parent 519
857e5b92828b
child 521
536a2305f3fa
equal deleted inserted replaced
519:857e5b92828b 520:0b09f0cb6098
325 } 325 }
326 if(event_pollout(ev, handler->parser->sn->csd, handler->writeev)) { 326 if(event_pollout(ev, handler->parser->sn->csd, handler->writeev)) {
327 handler->result = REQ_ABORTED; 327 handler->result = REQ_ABORTED;
328 } else { 328 } else {
329 handler->poll_out = TRUE; 329 handler->poll_out = TRUE;
330 handler->events++;
330 log_ereport(LOG_DEBUG, "cgi-send: req: %p enable poll out", handler->parser->rq); 331 log_ereport(LOG_DEBUG, "cgi-send: req: %p enable poll out", handler->parser->rq);
331 return 1; // keep readevent active 332 return 1; // keep readevent active
332 } 333 }
333 } 334 }
334 case CGI_IO_ERROR: { 335 case CGI_IO_ERROR: {
557 } else if(event->fn == cgi_stderr_readevent) { 558 } else if(event->fn == cgi_stderr_readevent) {
558 event_fn = "stderr"; 559 event_fn = "stderr";
559 } else if(event->fn == cgi_writeevent) { 560 } else if(event->fn == cgi_writeevent) {
560 event_fn = "httpout"; 561 event_fn = "httpout";
561 } 562 }
562 log_ereport(LOG_DEBUG, "cgi-send: req: %p finish: event: %d pollout: %d cgi_eof: %d fn: %s", rq, handler->events, handler->poll_out, handler->cgi_eof, event_fn); 563 log_ereport(LOG_DEBUG, "cgi-send: req: %p finish: event: %d pollout: %d wait_read: %d cgi_eof: %d fn: %s", rq, handler->events, handler->poll_out, handler->wait_read, handler->cgi_eof, event_fn);
564
565 if(handler->poll_out) {
566 // write event registered, however it will not be activated anymore
567 // we can safely remove the event
568 log_ereport(LOG_DEBUG, "cgi-send: req: %p finish: remove-poll write", rq);
569 if(event_removepoll(ev, sn->csd)) {
570 log_ereport(LOG_FAILURE, "cgi_event_finish: event_removepoll: %s", strerror(errno));
571 }
572 handler->events--;
573 handler->poll_out = FALSE;
574 }
563 575
564 if(--handler->events > 0) { 576 if(--handler->events > 0) {
565 return 0; 577 return 0;
566 } 578 }
567 579
586 } else { 598 } else {
587 return 0; 599 return 0;
588 } 600 }
589 } 601 }
590 */ 602 */
591 if(handler->poll_out) {
592 // write event registered, however it will not be activated anymore
593 // we can safely remove the event
594 log_ereport(LOG_DEBUG, "cgi-send: req: %p finish: remove-poll write", rq);
595 if(event_removepoll(ev, sn->csd)) {
596 log_ereport(LOG_FAILURE, "cgi_event_finish: event_removepoll: %s", strerror(errno));
597 }
598 }
599 603
600 if(handler->result == REQ_ABORTED && handler->process.pid != 0) { 604 if(handler->result == REQ_ABORTED && handler->process.pid != 0) {
601 log_ereport(LOG_FAILURE, "cgi-send: kill script: %s", handler->path); 605 log_ereport(LOG_FAILURE, "cgi-send: kill script: %s", handler->path);
602 killpg(handler->process.pid, SIGTERM); 606 killpg(handler->process.pid, SIGTERM);
603 } 607 }

mercurial