diff --git a/httplib.h b/httplib.h index bb74428..390025e 100644 --- a/httplib.h +++ b/httplib.h @@ -681,9 +681,10 @@ private: bool write_response(Stream &strm, bool close_connection, const Request &req, Response &res); bool write_response_with_content(Stream &strm, bool close_connection, - const Request &req, Response &res, - std::string &content_type, - std::string &boundary); + const Request &req, Response &res); + bool write_response_core(Stream &strm, bool close_connection, + const Request &req, Response &res, + std::string &content_type, std::string &boundary); bool write_content_with_provider(Stream &strm, const Request &req, Response &res, const std::string &boundary, const std::string &content_type); @@ -4012,13 +4013,26 @@ inline bool Server::write_response(Stream &strm, bool close_connection, const Request &req, Response &res) { std::string content_type; std::string boundary; - return write_response_with_content(strm, close_connection, req, res, - content_type, boundary); + return write_response_core(strm, close_connection, req, res, content_type, + boundary); } -inline bool Server::write_response_with_content( - Stream &strm, bool close_connection, const Request &req, Response &res, - std::string &content_type, std::string &boundary) { +inline bool Server::write_response_with_content(Stream &strm, + bool close_connection, + const Request &req, + Response &res) { + std::string content_type; + std::string boundary; + apply_ranges(req, res, content_type, boundary); + + return write_response_core(strm, close_connection, req, res, content_type, + boundary); +} + +inline bool Server::write_response_core(Stream &strm, bool close_connection, + const Request &req, Response &res, + std::string &content_type, + std::string &boundary) { assert(res.status != -1); if (400 <= res.status && error_handler_) { error_handler_(req, res); } @@ -4649,16 +4663,11 @@ Server::process_request(Stream &strm, bool close_connection, // Rounting if (routing(req, res, strm)) { if (res.status == -1) { res.status = req.ranges.empty() ? 200 : 206; } + return write_response_with_content(strm, close_connection, req, res); } else { if (res.status == -1) { res.status = 404; } + return write_response(strm, close_connection, req, res); } - - std::string content_type; - std::string boundary; - apply_ranges(req, res, content_type, boundary); - - return write_response_with_content(strm, close_connection, req, res, - content_type, boundary); } inline bool Server::is_valid() const { return true; }