Subject: | FCGX_Finish_r call FillBufferProc with FCGI_END_REQUEST already sent and reqDataPtr->isBeginProcessed TRUE |
Date: | Thu, 23 Feb 2017 12:21:50 +0000 |
To: | "bug-FCGI [...] rt.cpan.org" <bug-FCGI [...] rt.cpan.org> |
From: | Walter Borchia <walter_borchia [...] hotmail.com> |
hi,
I have a problem with FCGI.074 and IIS 7.5. sometimes a get a burst of 500 error. (I think the proble is in fcgiapp.c.)
after debugging I found a FillBufferProc continuously looping at SKIP: because reqDataPtr->isBeginProcessed is ON.
in fcgiapp.c the routine Finish_r says:
if (reqDataPtr->in) {
close |= FCGX_FClose(reqDataPtr->err);
close |= FCGX_FClose(reqDataPtr->out); // ==> send FCGI_END_REQUEST
close |= FCGX_GetError(reqDataPtr->in); // => determines call FillBuffProc jast after if file not at eof
// if a new request arrives, note that we have sent FCGI_END_REQUEST, FillBufferProc calls ProcessHeader and ProcessBeginHeader
// that says reqDataPtr->isBeginProcessed is already TRUE so return SKIP
I am now trying this solution:
if (reqDataPtr->in) {
close |= FCGX_FClose(reqDataPtr->err);
close |= FCGX_FClose(reqDataPtr->out);
if (reqDataPtr->isBeginProcessed) {
close |= FCGX_FClose(reqDataPtr->in);
}
else {
close |= FCGX_GetError(reqDataPtr->in);
}
thank you