src/server/safs/cgi.c

changeset 534
bf62eddbdb9b
parent 532
d8212d4f24f2
child 535
bf07abfe7f0a
equal deleted inserted replaced
533:2d6099ba2a7c 534:bf62eddbdb9b
323 return 0; 323 return 0;
324 } 324 }
325 325
326 event->finish = cgi_event_finish; 326 event->finish = cgi_event_finish;
327 handler->writeev->finish = NULL; 327 handler->writeev->finish = NULL;
328 CgiIOResult ret = cgi_read_output(handler, ev); 328 CgiIOResult ret = cgi_read_output(handler, ev, "readevent");
329 switch(ret) { 329 switch(ret) {
330 case CGI_IO_COMPLETE: { 330 case CGI_IO_COMPLETE: {
331 break; 331 break;
332 } 332 }
333 case CGI_IO_NEED_READ: { 333 case CGI_IO_NEED_READ: {
362 log_ereport(LOG_DEBUG, "cgi-send: req: %p writeevent cgi_eof = TRUE result: %d", handler->parser->rq, handler->result); 362 log_ereport(LOG_DEBUG, "cgi-send: req: %p writeevent cgi_eof = TRUE result: %d", handler->parser->rq, handler->result);
363 } 363 }
364 364
365 event->finish = cgi_event_finish; 365 event->finish = cgi_event_finish;
366 handler->readev->finish = NULL; 366 handler->readev->finish = NULL;
367 CgiIOResult ret = cgi_read_output(handler, ev); 367 CgiIOResult ret = cgi_read_output(handler, ev, "writeevent");
368 switch(ret) { 368 switch(ret) {
369 case CGI_IO_COMPLETE: { 369 case CGI_IO_COMPLETE: {
370 break; 370 break;
371 } 371 }
372 case CGI_IO_NEED_READ: { 372 case CGI_IO_NEED_READ: {
384 return 0; 384 return 0;
385 } 385 }
386 386
387 387
388 388
389 CgiIOResult cgi_read_output(CGIHandler *handler, EventHandler *ev) { 389 CgiIOResult cgi_read_output(CGIHandler *handler, EventHandler *ev, const char *debug_log) {
390 CGIResponseParser *parser = handler->parser; 390 CGIResponseParser *parser = handler->parser;
391 Session *sn = parser->sn; 391 Session *sn = parser->sn;
392 Request *rq = parser->rq; 392 Request *rq = parser->rq;
393 393
394 if(handler->result == REQ_ABORTED) { 394 if(handler->result == REQ_ABORTED) {
471 } 471 }
472 if(r < 0 && errno == EWOULDBLOCK) { 472 if(r < 0 && errno == EWOULDBLOCK) {
473 return CGI_IO_NEED_READ; 473 return CGI_IO_NEED_READ;
474 } 474 }
475 handler->cgi_eof = TRUE; 475 handler->cgi_eof = TRUE;
476 log_ereport(LOG_DEBUG, "cgi-send: rq: %p pid: %d set cgi_eof : %s", rq, handler->process.pid, debug_log);
476 return ret; 477 return ret;
477 } 478 }
478 479
479 int cgi_stderr_readevent(EventHandler *ev, Event *event) { 480 int cgi_stderr_readevent(EventHandler *ev, Event *event) {
480 CGIHandler *handler = event->cookie; 481 CGIHandler *handler = event->cookie;
581 } 582 }
582 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); 583 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);
583 584
584 handler->debug_finished = TRUE; 585 handler->debug_finished = TRUE;
585 if(event->fn != cgi_stderr_readevent) { 586 if(event->fn != cgi_stderr_readevent) {
587 log_ereport(LOG_DEBUG, "cgi-send: req: %p finish set cgi_eof: %s", rq, event_fn);
586 handler->cgi_eof = TRUE; 588 handler->cgi_eof = TRUE;
587 } 589 }
588 590
589 if(handler->result == REQ_ABORTED && handler->process.pid != 0 && handler->cgi_kill == 0) { 591 if(handler->result == REQ_ABORTED && handler->process.pid != 0 && handler->cgi_kill == 0) {
590 log_ereport(LOG_FAILURE, "cgi-send: kill script: %s pid: %d", handler->path, (int)handler->process.pid); 592 log_ereport(LOG_FAILURE, "cgi-send: kill script: %s pid: %d", handler->path, (int)handler->process.pid);

mercurial