diff options
Diffstat (limited to 'plugins/fcgi/fcgi.cpp')
-rw-r--r-- | plugins/fcgi/fcgi.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/plugins/fcgi/fcgi.cpp b/plugins/fcgi/fcgi.cpp index bb0a8b4..d19916c 100644 --- a/plugins/fcgi/fcgi.cpp +++ b/plugins/fcgi/fcgi.cpp @@ -407,7 +407,7 @@ std::string fcgi_plugin::fcgiQuery(FCGIContext& context) FCGI_Record stdin_{FCGI_STDIN, id, body}; if (socket->write(stdin_.getBuffer()) != stdin_.getBuffer().size()) std::cerr << "Warning: Not all bytes written 6" << std::endl; - + if (body.size()) { FCGI_Record stdin_end{FCGI_STDIN, id, std::string{}}; if (socket->write(stdin_end.getBuffer()) != stdin_end.getBuffer().size()) @@ -424,15 +424,14 @@ std::string fcgi_plugin::fcgiQuery(FCGIContext& context) std::cerr << "Warning: Not all bytes written 8" << std::endl; #endif - bool ended{false}; std::vector<char> inbuf; - std::vector<char> inbuf_part(1024); + + bool ended{false}; while (!ended) { try { - size_t got {socket->read(inbuf_part)}; - inbuf.insert(inbuf.end(), inbuf_part.begin(), inbuf_part.begin() + got); + socket->read(inbuf); } catch (const fcgi_eof_error&) { - //std::cerr << "FCGI Warning: Early EOF" << std::endl; // seems to be ok here + std::cerr << "FCGI Warning: Early EOF" << std::endl; // seems to be ok here ended = true; //return HttpStatus("500", "FCGI connection: EOF on read", context.SetResponseHeader); } @@ -453,7 +452,7 @@ std::string fcgi_plugin::fcgiQuery(FCGIContext& context) } else throw std::runtime_error("Unhandled FCGI type: "s + std::to_string(r.getType())); } catch (const std::length_error& ex) { - // ignore if not enough data available yet + // ignore FCGI_Record construction if not enough data available for full record yet break; } } |