reverting premature revert
This commit is contained in:
parent
7e35a7fe0c
commit
3da664236c
@ -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) {
|
||||||
|
@ -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,
|
||||||
|
@ -48,4 +48,4 @@ IF( NOT STXXL_FIND_QUIETLY )
|
|||||||
ENDIF()
|
ENDIF()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
MARK_AS_ADVANCED(STXXL_INCLUDE_DIR STXXL_LIBRARY)
|
MARK_AS_ADVANCED(STXXL_INCLUDE_DIR STXXL_LIBRARY)
|
||||||
|
Loading…
Reference in New Issue
Block a user