reverting premature revert

This commit is contained in:
Dennis Luxen 2013-11-12 17:39:24 -05:00
parent 7e35a7fe0c
commit 3da664236c
3 changed files with 14 additions and 12 deletions

View File

@ -80,8 +80,8 @@ struct Reply {
} status; } status;
std::vector<Header> headers; std::vector<Header> headers;
void ToBuffers(std::vector<boost::asio::const_buffer>&); std::vector<boost::asio::const_buffer> toBuffers();
void HeadersToBuffers(std::vector<boost::asio::const_buffer>&); std::vector<boost::asio::const_buffer> HeaderstoBuffers();
std::string content; std::string content;
static Reply stockReply(status_type status); static Reply stockReply(status_type status);
void setSize(const unsigned size) { void setSize(const unsigned size) {
@ -116,7 +116,8 @@ std::string ToString(Reply::status_type status) {
} }
} }
void Reply::ToBuffers( std::vector<boost::asio::const_buffer> & buffers ){ std::vector<boost::asio::const_buffer> Reply::toBuffers(){
std::vector<boost::asio::const_buffer> buffers;
buffers.push_back(ToBuffer(status)); buffers.push_back(ToBuffer(status));
for (std::size_t i = 0; i < headers.size(); ++i) { for (std::size_t i = 0; i < headers.size(); ++i) {
Header& h = headers[i]; Header& h = headers[i];
@ -127,9 +128,11 @@ void Reply::ToBuffers( std::vector<boost::asio::const_buffer> & buffers ){
} }
buffers.push_back(boost::asio::buffer(crlf)); buffers.push_back(boost::asio::buffer(crlf));
buffers.push_back(boost::asio::buffer(content)); buffers.push_back(boost::asio::buffer(content));
return buffers;
} }
void Reply::HeadersToBuffers( std::vector<boost::asio::const_buffer>& buffers ){ std::vector<boost::asio::const_buffer> Reply::HeaderstoBuffers(){
std::vector<boost::asio::const_buffer> buffers;
buffers.push_back(ToBuffer(status)); buffers.push_back(ToBuffer(status));
for (std::size_t i = 0; i < headers.size(); ++i) { for (std::size_t i = 0; i < headers.size(); ++i) {
Header& h = headers[i]; Header& h = headers[i];
@ -139,6 +142,7 @@ void Reply::HeadersToBuffers( std::vector<boost::asio::const_buffer>& buffers ){
buffers.push_back(boost::asio::buffer(crlf)); buffers.push_back(boost::asio::buffer(crlf));
} }
buffers.push_back(boost::asio::buffer(crlf)); buffers.push_back(boost::asio::buffer(crlf));
return buffers;
} }
Reply Reply::stockReply(Reply::status_type status) { Reply Reply::stockReply(Reply::status_type status) {

View File

@ -87,13 +87,13 @@ private:
&compression_type &compression_type
); );
std::vector<boost::asio::const_buffer> output_buffer;
if( result ) { if( result ) {
request.endpoint = TCP_socket.remote_endpoint().address(); request.endpoint = TCP_socket.remote_endpoint().address();
request_handler.handle_request(request, reply); request_handler.handle_request(request, reply);
Header compression_header; Header compression_header;
std::vector<unsigned char> compressed_output; std::vector<unsigned char> compressed_output;
std::vector<boost::asio::const_buffer> output_buffer;
switch(compression_type) { switch(compression_type) {
case deflateRFC1951: case deflateRFC1951:
compression_header.name = "Content-Encoding"; compression_header.name = "Content-Encoding";
@ -109,7 +109,7 @@ private:
compression_type compression_type
); );
reply.setSize(compressed_output.size()); reply.setSize(compressed_output.size());
reply.HeadersToBuffers(output_buffer); output_buffer = reply.HeaderstoBuffers();
output_buffer.push_back( output_buffer.push_back(
boost::asio::buffer(compressed_output) boost::asio::buffer(compressed_output)
); );
@ -139,7 +139,7 @@ private:
compression_type compression_type
); );
reply.setSize(compressed_output.size()); reply.setSize(compressed_output.size());
reply.HeadersToBuffers(output_buffer); output_buffer = reply.HeaderstoBuffers();
output_buffer.push_back( output_buffer.push_back(
boost::asio::buffer(compressed_output) boost::asio::buffer(compressed_output)
); );
@ -156,10 +156,9 @@ private:
); );
break; break;
case noCompression: case noCompression:
reply.HeadersToBuffers(output_buffer);
boost::asio::async_write( boost::asio::async_write(
TCP_socket, TCP_socket,
output_buffer, reply.toBuffers(),
strand.wrap( strand.wrap(
boost::bind( boost::bind(
&Connection::handle_write, &Connection::handle_write,
@ -172,10 +171,9 @@ private:
} }
} else if (!result) { } else if (!result) {
reply = Reply::stockReply(Reply::badRequest); reply = Reply::stockReply(Reply::badRequest);
reply.HeadersToBuffers(output_buffer);
boost::asio::async_write( boost::asio::async_write(
TCP_socket, TCP_socket,
output_buffer, reply.toBuffers(),
strand.wrap( strand.wrap(
boost::bind( boost::bind(
&Connection::handle_write, &Connection::handle_write,