src/server/safs/cgi.c

changeset 521
536a2305f3fa
parent 520
0b09f0cb6098
child 522
317cd83fa3df
equal deleted inserted replaced
520:0b09f0cb6098 521:536a2305f3fa
306 } 306 }
307 307
308 int cgi_stdout_readevent(EventHandler *ev, Event *event) { 308 int cgi_stdout_readevent(EventHandler *ev, Event *event) {
309 CGIHandler *handler = event->cookie; 309 CGIHandler *handler = event->cookie;
310 310
311 if(handler->debug_finished) {
312 log_ereport(LOG_DEBUG, "cgi-send: req: %p debug_finished: 1 cgi_stdout_readevent events: %d", handler->parser.rq, handler->events);
313 }
314
311 event->finish = cgi_event_finish; 315 event->finish = cgi_event_finish;
312 handler->writeev->finish = NULL; 316 handler->writeev->finish = NULL;
313 CgiIOResult ret = cgi_read_output(handler, ev); 317 CgiIOResult ret = cgi_read_output(handler, ev);
314 switch(ret) { 318 switch(ret) {
315 case CGI_IO_COMPLETE: { 319 case CGI_IO_COMPLETE: {
325 } 329 }
326 if(event_pollout(ev, handler->parser->sn->csd, handler->writeev)) { 330 if(event_pollout(ev, handler->parser->sn->csd, handler->writeev)) {
327 handler->result = REQ_ABORTED; 331 handler->result = REQ_ABORTED;
328 } else { 332 } else {
329 handler->poll_out = TRUE; 333 handler->poll_out = TRUE;
330 handler->events++;
331 log_ereport(LOG_DEBUG, "cgi-send: req: %p enable poll out", handler->parser->rq); 334 log_ereport(LOG_DEBUG, "cgi-send: req: %p enable poll out", handler->parser->rq);
332 return 1; // keep readevent active 335 return 1; // keep readevent active
333 } 336 }
334 } 337 }
335 case CGI_IO_ERROR: { 338 case CGI_IO_ERROR: {
557 event_fn = "stdout"; 560 event_fn = "stdout";
558 } else if(event->fn == cgi_stderr_readevent) { 561 } else if(event->fn == cgi_stderr_readevent) {
559 event_fn = "stderr"; 562 event_fn = "stderr";
560 } else if(event->fn == cgi_writeevent) { 563 } else if(event->fn == cgi_writeevent) {
561 event_fn = "httpout"; 564 event_fn = "httpout";
565 log_ereport(LOG_DEBUG, "cgi-send: req: %p finish: pid: %d", rq, handler->process.pid);
562 } 566 }
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); 567 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);
568
569 handler->debug_finished = TRUE;
570
571 if(--handler->events > 0) {
572 return 0;
573 }
564 574
565 if(handler->poll_out) { 575 if(handler->poll_out) {
566 // write event registered, however it will not be activated anymore 576 // write event registered, however it will not be activated anymore
567 // we can safely remove the event 577 // we can safely remove the event
568 log_ereport(LOG_DEBUG, "cgi-send: req: %p finish: remove-poll write", rq); 578 log_ereport(LOG_DEBUG, "cgi-send: req: %p finish: remove-poll write", rq);
569 if(event_removepoll(ev, sn->csd)) { 579 if(event_removepoll(ev, sn->csd)) {
570 log_ereport(LOG_FAILURE, "cgi_event_finish: event_removepoll: %s", strerror(errno)); 580 log_ereport(LOG_FAILURE, "cgi_event_finish: event_removepoll: %s", strerror(errno));
571 } 581 }
572 handler->events--;
573 handler->poll_out = FALSE; 582 handler->poll_out = FALSE;
574 }
575
576 if(--handler->events > 0) {
577 return 0;
578 } 583 }
579 584
580 /* 585 /*
581 if(--handler->events > 0) { 586 if(--handler->events > 0) {
582 if(handler->events == 1) { 587 if(handler->events == 1) {

mercurial